%reset -f
# jupyter_pwd = %pwd
# if jupyter_pwd == "/":
# %cd /workspace
# ipynb形式のライブラリのインポート
%run ./lib/lib.ipynb
# 生データの入ったCSVファイルの保持されたディレクトリ名を格納している変数
csvDirPath = "./csv_files/"
# NPBのベンチマーク名のリスト
benchmarkNames = ["cg", "ep", "ft", "is", "lu", "mg"]
# LULESH ベンチマークプログラムのプロセス数・問題サイズ・イテレーション数
lulesh_processes: list[int] = [8, 27, 64, 125, 216, 343, 512]
lulesh_iterations: list[int] = [8, 16, 32, 64, 128, 256]
lulesh_sizes: list[int] = [16, 24, 32, 48, 64, 128]
# ipynb形式のライブラリノートを.py形式に変更したものをインポート
import lib
import lib.lab_lib
from lib.lab_lib import *
train_lulesh_processes: list[int] = [8, 27, 64, 125, 216, 343]
train_lulesh_iterations: list[int] = [8, 16, 32, 64, 128]
train_lulesh_sizes: list[int] = [16, 24, 32, 48]
test_lulesh_processes: list[int] = [512, 729, 1000]
test_lulesh_iterations: list[int] = [256, 512, 1024]
test_lulesh_sizes: list[int] = [64, 96, 128]
list_modelName: list[str] = [
"modelIp",
"modelLog",
"modelLinAndIp",
"modelLinAndLog",
"modelIpAndLin",
"modelIpAndLog",
"modelLogAndLin",
"modelLogAndIp",
"modelProcessDividedByProblemSize",
"modelProblemSizeDividedByProcess",
"modelInfiniteProductOfProblemSizeMultipliedByProcesses",
"modelInfiniteProductOfProblemSizeDividedByProcesses",
"modelLinearSumOf2elementCombination",
"modelLinearSumOfElementCombinations",
"modelLinearSumOf2elementCombinationWithSquared",
"modelLinearSumOf2elementCombinationWithCubed",
"modelSquareRootOfProcess",
"modelSquareRootTimesOtherElems",
"modelObeyOneParameter",
"modelLin"
# "modelBasicTree",
]
# ipynb形式のライブラリのインポート
%run ./lib/lib.ipynb
# ipynb形式のライブラリノートを.py形式に変更したものをインポート
import lib
import lib.lab_lib
from lib.lab_lib import *
# 生データの入ったCSVファイルの保持されたディレクトリ名を格納している変数
csvDirPath = "./csv_files/"
# NPBのベンチマーク名のリスト
benchmarkNames = ["cg", "ep", "ft", "is", "lu", "mg"]
# NPBのプロセス数
npb_process: list[int] = [2, 4, 8, 16, 32, 64, 128, 256]
train_npb_process: list[int] = npb_process[:-1]
test_npb_process: list[int] = npb_process[-1:]
# NPBのCGの初期変数
cg_na: list[int] = [14000, 30000, 75000, 100000, 1500000]
cg_nonzer: list[int] = [11, 12, 13, 14, 15, 18, 21]
cg_niter: list[int] = [15, 30, 75, 90, 100]
cg_shift: list[int] = [20, 40, 60, 80, 110, 200]
train_cg_na: list[int] = cg_na[:-1]
train_cg_nonzer: list[int] = cg_nonzer[:-1]
train_cg_niter: list[int] = cg_niter[:-1]
train_cg_shift: list[int] = cg_shift[:-1]
test_cg_na: list[int] = cg_na[-1:]
test_cg_nonzer: list[int] = cg_nonzer[-1:]
test_cg_niter: list[int] = cg_niter[-1:]
test_cg_shift: list[int] = cg_shift[-1:]
# LULESH ベンチマークプログラムのプロセス数・問題サイズ・イテレーション数
lulesh_processes: list[int] = [8, 27, 64, 125, 216, 343, 512]
lulesh_iterations: list[int] = [8, 16, 32, 64, 128, 256]
lulesh_sizes: list[int] = [16, 24, 32, 48, 64, 128]
train_lulesh_processes: list[int] = [8, 27, 64, 125, 216, 343]
train_lulesh_iterations: list[int] = [8, 16, 32, 64, 128]
train_lulesh_sizes: list[int] = [16, 24, 32, 48]
test_lulesh_processes: list[int] = [512, 729, 1000]
test_lulesh_iterations: list[int] = [256, 512, 1024]
test_lulesh_sizes: list[int] = [64, 96, 128]
# Extra-Pのオプション
modelerNames: list[str] = [
# "refining",
"multi-parameter",
"default",
# "basic --options poly_exponents=-1,0,1,2,3 log_exponents=0,1 force_combination_exponents=1 allow_negative_exponents=1"
]
modelerOption: str = """ --options \#spm=Basic \#spo=poly_exponents=-1,0,1,2,3,log_exponents=0,1,force_combination_exponents=1,allow_negative_exponents=True"""
list_modelName: list[str] = [
"modelIp",
"modelLog",
"modelLinAndIp",
"modelLinAndLog",
"modelIpAndLin",
"modelIpAndLog",
"modelLogAndLin",
"modelLogAndIp",
"modelProcessDividedByProblemSize",
"modelProblemSizeDividedByProcess",
"modelInfiniteProductOfProblemSizeMultipliedByProcesses",
"modelInfiniteProductOfProblemSizeDividedByProcesses",
"modelLinearSumOf2elementCombination",
"modelLinearSumOfElementCombinations",
"modelLinearSumOf2elementCombinationWithSquared",
"modelLinearSumOf2elementCombinationWithCubed",
"modelSquareRootOfProcess",
"modelSquareRootTimesOtherElems",
"modelObeyOneParameter",
"modelLin"
# "modelBasicTree",
]
list_csvDir = [
"./csv_files/lulesh_1st/",
"./csv_files/lulesh_2nd/",
"./csv_files/lulesh_3rd/",
]
DEBUG:__main__:hello DEBUG:lib.lab_lib:hello DEBUG:__main__:hello
date: str = "2022年10月10日"
input_rawDF: pd.DataFrame = return_rawDFinLULESH(
processes=lulesh_processes,
iterations=lulesh_iterations,
sizes=lulesh_sizes,
csvDirPath=csvDirPath,
)
input_rawDF = input_rawDF.rename(columns={"Name": "functionName"})
input_list_expVarNames: list[str] = ["process", "iteration", "size"]
input_list_resVarNames: list[str] = ["#Call"]
list_modelName_before: list[str] = [
"modelIp",
"modelLog",
"modelLinAndIp",
"modelLinAndLog",
"modelIpAndLin",
"modelIpAndLog",
"modelLogAndLin",
"modelLogAndIp",
"modelProcessDividedByProblemSize",
"modelProblemSizeDividedByProcess",
# "modelInfiniteProductOfProblemSizeMultipliedByProcesses",
# "modelInfiniteProductOfProblemSizeDividedByProcesses",
"modelLinearSumOf2elementCombination",
"modelLinearSumOfElementCombinations",
# "modelLinearSumOf2elementCombinationWithSquared",
# "modelLinearSumOf2elementCombinationWithCubed",
# "modelSquareRootOfProcess",
# "modelSquareRootTimesOtherElems",
# "modelObeyOneParameter",
"modelLin"
# "modelBasicTree",
]
# 集合演算を用いて説明変数・目的変数が入力DFに存在していることを確認
if input_list_expVarNames == [] or (
set(input_list_expVarNames).issubset(set(input_rawDF.columns.tolist())) == False
):
warnings.warn(f"説明変数の指定に誤りがあります")
# return False
if input_list_resVarNames == [] or (set(input_rawDF.columns.tolist()) == False):
warnings.warn(f"問題変数の指定に誤りがあります")
# return False
function_names: list[str] = list(set(input_rawDF["functionName"].tolist()))
if len(function_names) == 0:
warnings.warn("与えられたDFに関数名がありません")
# return False
result_series_list: list[pd.Series] = []
for function_name in function_names:
# 関数ごとの生データ
input_rawDF_per_function = input_rawDF[input_rawDF["functionName"] == function_name]
# モデルの構築
models = Models(
inputDF=input_rawDF_per_function,
expVarColNames=input_list_expVarNames,
resVarColNames=input_list_resVarNames,
targetDF=None,
modelNames=list_modelName_before,
)
with warnings.catch_warnings():
warnings.simplefilter("ignore")
models.setUpDataBeforeCalcLr()
models.calcLr()
models.calcMAPE()
dictCalcedMAPE = models.returnCalculatedMAPE()
# 算出されたMAPEの数値をfloatにする
for key in dictCalcedMAPE.keys():
dictCalcedMAPE[key] = float(dictCalcedMAPE[key])
# 関数ごとの結果に格納
dict_for_series: dict = copy.deepcopy(dictCalcedMAPE)
dict_for_series["functionName"] = function_name
series = pd.Series(dict_for_series)
result_series_list.append(series)
resultDF: pd.DataFrame = pd.DataFrame(result_series_list)
resultDF = addLowestMAPEColumn(
inputDF=resultDF, model_name_list=list_modelName_before, version=2
)
resultDF.mean()
/tmp/ipykernel_121/3224927892.py:92: FutureWarning: The default value of numeric_only in DataFrame.mean is deprecated. In a future version, it will default to False. In addition, specifying 'numeric_only=None' is deprecated. Select only valid columns or specify the value of numeric_only to silence this warning. resultDF.mean()
modelLin 324.173667 modelIp 411.497704 modelLog 454.526334 modelProcessDividedByProblemSize 40.081234 modelProblemSizeDividedByProcess 35.645728 modelLinAndIp 421.093841 modelLinAndLog 455.735629 modelIpAndLin 315.660772 modelIpAndLog 446.710080 modelLogAndLin 323.795580 modelLogAndIp 419.026472 modelLinearSumOf2elementCombination 194.468150 modelLinearSumOfElementCombinations 41.843775 最低値 4.756974 dtype: float64
date: str = "2022年10月10日"
input_rawDF: pd.DataFrame = return_rawDFinLULESH(
processes=train_lulesh_processes,
iterations=train_lulesh_iterations,
sizes=train_lulesh_sizes,
csvDirPath=csvDirPath,
)
input_rawDF = input_rawDF.rename(columns={"Name": "functionName"})
input_list_expVarNames: list[str] = ["process", "iteration", "size"]
input_list_resVarNames: list[str] = ["#Call"]
list_modelName: list[str] = [
"modelIp",
"modelLog",
"modelLinAndIp",
"modelLinAndLog",
"modelIpAndLin",
"modelIpAndLog",
"modelLogAndLin",
"modelLogAndIp",
"modelProcessDividedByProblemSize",
"modelProblemSizeDividedByProcess",
"modelInfiniteProductOfProblemSizeMultipliedByProcesses",
"modelInfiniteProductOfProblemSizeDividedByProcesses",
"modelLinearSumOf2elementCombination",
"modelLinearSumOfElementCombinations",
"modelLinearSumOf2elementCombinationWithSquared",
"modelLinearSumOf2elementCombinationWithCubed",
"modelSquareRootOfProcess",
"modelSquareRootTimesOtherElems",
"modelObeyOneParameter",
"modelLin"
# "modelBasicTree",
]
# 集合演算を用いて説明変数・目的変数が入力DFに存在していることを確認
if input_list_expVarNames == [] or (
set(input_list_expVarNames).issubset(set(input_rawDF.columns.tolist())) == False
):
warnings.warn(f"説明変数の指定に誤りがあります")
# return False
if input_list_resVarNames == [] or (set(input_rawDF.columns.tolist()) == False):
warnings.warn(f"問題変数の指定に誤りがあります")
# return False
function_names: list[str] = list(set(input_rawDF["functionName"].tolist()))
if len(function_names) == 0:
warnings.warn("与えられたDFに関数名がありません")
# return False
result_series_list: list[pd.Series] = []
for function_name in function_names:
# 関数ごとの生データ
input_rawDF_per_function = input_rawDF[input_rawDF["functionName"] == function_name]
# モデルの構築
models = Models(
inputDF=input_rawDF_per_function,
expVarColNames=input_list_expVarNames,
resVarColNames=input_list_resVarNames,
targetDF=None,
modelNames=list_modelName,
)
with warnings.catch_warnings():
warnings.simplefilter("ignore")
models.setUpDataBeforeCalcLr()
models.calcLr()
models.calcMAPE()
dictCalcedMAPE = models.returnCalculatedMAPE()
# 算出されたMAPEの数値をfloatにする
for key in dictCalcedMAPE.keys():
dictCalcedMAPE[key] = float(dictCalcedMAPE[key])
# 関数ごとの結果に格納
dict_for_series: dict = copy.deepcopy(dictCalcedMAPE)
dict_for_series["functionName"] = function_name
series = pd.Series(dict_for_series)
result_series_list.append(series)
resultDF: pd.DataFrame = pd.DataFrame(result_series_list)
resultDF = addLowestMAPEColumn(
inputDF=resultDF, model_name_list=list_modelName, version=2
)
resultDF.mean()
/tmp/ipykernel_121/3818556874.py:91: FutureWarning: The default value of numeric_only in DataFrame.mean is deprecated. In a future version, it will default to False. In addition, specifying 'numeric_only=None' is deprecated. Select only valid columns or specify the value of numeric_only to silence this warning. resultDF.mean()
modelLin 29.441654 modelIp 59.154925 modelLog 52.719367 modelProcessDividedByProblemSize 29.798790 modelProblemSizeDividedByProcess 29.624622 modelInfiniteProductOfProblemSizeDividedByProcesses 32.285411 modelInfiniteProductOfProblemSizeMultipliedByProcesses 35.270480 modelLinAndIp 66.857906 modelLinAndLog 54.345673 modelIpAndLin 22.268142 modelIpAndLog 47.307227 modelLogAndLin 28.010418 modelLogAndIp 64.735627 modelLinearSumOf2elementCombination 34.761001 modelLinearSumOfElementCombinations 3.261087 modelLinearSumOf2elementCombinationWithSquared 38.297241 modelLinearSumOf2elementCombinationWithCubed 40.734855 modelSquareRootOfProcess 28.765539 modelSquareRootTimesOtherElems 64.499527 modelObeyOneParameter 29.441654 最低値 0.475034 dtype: float64
# 2022年10月14日 研究室内発表用 資料作成
# |<既存モデル>|<すべてのモデル>|
# |<MAPE@既存モデル>|<MAPE@すべてのモデル>|
expVar: list[str] = ["process", "iteration", "size"]
resVar: str = "#Call"
trainDF: pd.DataFrame = ret_averaged_rawDF_lulesh(
list_process=train_lulesh_processes,
list_iteration=train_lulesh_iterations,
list_size=train_lulesh_sizes,
list_csvDir=list_csvDir,
resVar=resVar,
)
trainDF = trainDF.reset_index()
trainDF["functionName"] = trainDF["Name"]
functionNames: list[str] = sorted(list(set(trainDF["Name"])))
_result_series_list: list[pd.Series] = []
_result_series_list_before: list[pd.Series] = []
for functionName in functionNames:
trainDF_perFunc: pd.DataFrame = trainDF[trainDF["functionName"] == functionName]
models = Models(
inputDF=trainDF_perFunc,
expVarColNames=expVar,
resVarColNames=[resVar],
targetDF=None,
modelNames=list_modelName,
)
models_before = Models(
inputDF=trainDF_perFunc,
expVarColNames=expVar,
resVarColNames=[resVar],
targetDF=None,
modelNames=list_modelName_before,
)
models.setUpDataBeforeCalcLr()
models.calcLr()
models.calcMAPE()
models_before.setUpDataBeforeCalcLr()
models_before.calcLr()
models_before.calcMAPE()
dictCalcedMAPE = models.returnCalculatedMAPE()
dictCalcedMAPE_before = models_before.returnCalculatedMAPE()
for key in dictCalcedMAPE.keys():
dictCalcedMAPE[key] = float(dictCalcedMAPE[key])
for key in dictCalcedMAPE_before.keys():
dictCalcedMAPE_before[key] = float(dictCalcedMAPE_before[key])
dict_for_series: dict = copy.deepcopy(dictCalcedMAPE)
dict_for_series["functionName"] = functionName
dict_for_series_before: dict = copy.deepcopy(dictCalcedMAPE_before)
dict_for_series_before["functionName"] = functionName
series: pd.DataFrame = pd.Series(dict_for_series)
series_before: pd.DataFrame = pd.Series(dict_for_series_before)
_result_series_list.append(series)
_result_series_list_before.append(series_before)
resultDF: pd.DataFrame = pd.DataFrame(_result_series_list)
resultDF = addLowestMAPEColumn(
inputDF=resultDF, model_name_list=list_modelName, version=2
)
resultDF_before: pd.DataFrame = pd.DataFrame(_result_series_list_before)
resultDF_before = addLowestMAPEColumn(
inputDF=resultDF_before, model_name_list=list_modelName_before, version=2
)
/usr/local/lib/python3.10/site-packages/scipy/optimize/_minpack_py.py:881: OptimizeWarning: Covariance of the parameters could not be estimated
warnings.warn('Covariance of the parameters could not be estimated',
/usr/local/lib/python3.10/site-packages/scipy/optimize/_minpack_py.py:881: OptimizeWarning: Covariance of the parameters could not be estimated
warnings.warn('Covariance of the parameters could not be estimated',
/usr/local/lib/python3.10/site-packages/scipy/optimize/_minpack_py.py:881: OptimizeWarning: Covariance of the parameters could not be estimated
warnings.warn('Covariance of the parameters could not be estimated',
/usr/local/lib/python3.10/site-packages/scipy/optimize/_minpack_py.py:881: OptimizeWarning: Covariance of the parameters could not be estimated
warnings.warn('Covariance of the parameters could not be estimated',
/usr/local/lib/python3.10/site-packages/scipy/optimize/_minpack_py.py:881: OptimizeWarning: Covariance of the parameters could not be estimated
warnings.warn('Covariance of the parameters could not be estimated',
/usr/local/lib/python3.10/site-packages/scipy/optimize/_minpack_py.py:881: OptimizeWarning: Covariance of the parameters could not be estimated
warnings.warn('Covariance of the parameters could not be estimated',
/usr/local/lib/python3.10/site-packages/scipy/optimize/_minpack_py.py:881: OptimizeWarning: Covariance of the parameters could not be estimated
warnings.warn('Covariance of the parameters could not be estimated',
/usr/local/lib/python3.10/site-packages/scipy/optimize/_minpack_py.py:881: OptimizeWarning: Covariance of the parameters could not be estimated
warnings.warn('Covariance of the parameters could not be estimated',
/usr/local/lib/python3.10/site-packages/scipy/optimize/_minpack_py.py:881: OptimizeWarning: Covariance of the parameters could not be estimated
warnings.warn('Covariance of the parameters could not be estimated',
/usr/local/lib/python3.10/site-packages/scipy/optimize/_minpack_py.py:881: OptimizeWarning: Covariance of the parameters could not be estimated
warnings.warn('Covariance of the parameters could not be estimated',
# resultDF
# resultDF_before
print(resultDF.mean())
print(resultDF_before.mean())
modelLin 222179.489821 modelIp 223497.366933 modelLog 223015.868812 modelProcessDividedByProblemSize 114.335746 modelProblemSizeDividedByProcess 109.622295 modelInfiniteProductOfProblemSizeDividedByProcesses 112.047111 modelInfiniteProductOfProblemSizeMultipliedByProcesses 112.634694 modelLinAndIp 224937.799479 modelLinAndLog 225657.851702 modelIpAndLin 224677.364035 modelIpAndLog 228642.094382 modelLogAndLin 217973.966443 modelLogAndIp 219952.365344 modelLinearSumOf2elementCombination 185327.084954 modelLinearSumOfElementCombinations 229591.660065 modelLinearSumOf2elementCombinationWithSquared 232451.512990 modelLinearSumOf2elementCombinationWithCubed 225786.540482 modelSquareRootOfProcess 217637.402990 modelSquareRootTimesOtherElems 192621.816842 modelObeyOneParameter 222179.489821 最低値 96.722879 dtype: float64 modelLin 222179.489821 modelIp 223497.366933 modelLog 223015.868812 modelProcessDividedByProblemSize 114.335746 modelProblemSizeDividedByProcess 109.622295 modelLinAndIp 224937.799479 modelLinAndLog 225657.851702 modelIpAndLin 224677.364035 modelIpAndLog 228642.094382 modelLogAndLin 217973.966443 modelLogAndIp 219952.365344 modelLinearSumOf2elementCombination 185327.084954 modelLinearSumOfElementCombinations 229591.660065 最低値 98.068361 dtype: float64
/tmp/ipykernel_121/587506451.py:1: FutureWarning: The default value of numeric_only in DataFrame.mean is deprecated. In a future version, it will default to False. In addition, specifying 'numeric_only=None' is deprecated. Select only valid columns or specify the value of numeric_only to silence this warning. print(resultDF.mean()) /tmp/ipykernel_121/587506451.py:2: FutureWarning: The default value of numeric_only in DataFrame.mean is deprecated. In a future version, it will default to False. In addition, specifying 'numeric_only=None' is deprecated. Select only valid columns or specify the value of numeric_only to silence this warning. print(resultDF_before.mean())
# CG
trainDF_CG: pd.DataFrame = return_rawDF_cg(
list_process=train_npb_process,
list_na=train_cg_na,
list_nonzer=train_cg_nonzer,
list_niter=train_cg_niter,
list_shift=train_cg_shift,
csvDir=csvDirPath,
)
testDF_CG: pd.DataFrame = return_rawDF_cg(
list_process=test_npb_process,
list_na=test_cg_na,
list_nonzer=test_cg_nonzer,
list_niter=test_cg_niter,
list_shift=test_cg_shift,
csvDir=csvDirPath,
)
trainDF_CG = trainDF_CG.reset_index()
testDF_CG = testDF_CG.reset_index()
trainDF_CG["functionName"] = trainDF_CG["Name"]
testDF_CG["functionName"] = testDF_CG["Name"]
functionNames_CG: list[str] = sorted(list(set(trainDF_CG["Name"])))
expVar_CG: list[str] = ["process", "na", "nonzer", "niter", "shift"]
resVar_CG: str = "#Call"
dict_symbols_CG = {}
for elem in expVar_CG:
dict_symbols_CG[elem] = symbols(elem, real=True)
target_env_cg = [
(dict_symbols_CG["process"], test_npb_process[-1]),
(dict_symbols_CG["na"], test_cg_na[-1]),
(dict_symbols_CG["nonzer"], test_cg_nonzer[-1]),
(dict_symbols_CG["niter"], test_cg_niter[-1]),
(dict_symbols_CG["shift"], test_cg_shift[-1]),
]
/root/src/lib/lab_lib.py:8785: UserWarning: ./csv_files/cg_na75000_nonzer18_niter30_shift60_process4.csv is empty.
warnings.warn(f"{filePath} is empty.")
/root/src/lib/lab_lib.py:8785: UserWarning: ./csv_files/cg_na75000_nonzer15_niter90_shift80_process8.csv is empty.
warnings.warn(f"{filePath} is empty.")
_list_series: list[pd.Series] = []
for functionNames in functionNames_CG:
pass
=====
def ret_averaged_rawDF_cg(
list_process=list[int],
list_na=list[int],
list_nonzer=list[int],
list_niter=list[int],
list_shift=list[int],
list_csvDir=list[str],
resVar=str,
):
"""複数のCSVからDFを取得する関数
引数resVarで指定された列がInclusiveもしくはExclusiveの場合はそれらが秒に変換され、InclusivePerCall列もしくはExclusivePerCall列が生成される
Args:
list_process(list[int]):プロセス数
list_na(list[int]):初期変数na
list_nonzer(list[int]):初期変数nonzer
list_niter(list[int]):初期変数niter
list_shift(list[int]):初期変数shift
list_csvDir(list[str]):CSVファイルのディレクトリを複数保持したリスト
resVar(str):目的変数のカラム名
"""
pass
%reset -f
# jupyter_pwd = %pwd
# if jupyter_pwd == "/":
# %cd /workspace
# ipynb形式のライブラリのインポート
%run ./lib/lib.ipynb
# 生データの入ったCSVファイルの保持されたディレクトリ名を格納している変数
csvDirPath = "./csv_files/"
# NPBのベンチマーク名のリスト
benchmarkNames = ["cg", "ep", "ft", "is", "lu", "mg"]
# LULESH ベンチマークプログラムのプロセス数・問題サイズ・イテレーション数
lulesh_processes: list[int] = [8, 27, 64, 125, 216, 343, 512]
lulesh_iterations: list[int] = [8, 16, 32, 64, 128, 256]
lulesh_sizes: list[int] = [16, 24, 32, 48, 64, 128]
# ipynb形式のライブラリノートを.py形式に変更したものをインポート
import lib
import lib.lab_lib
from lib.lab_lib import *
train_lulesh_processes: list[int] = [8, 27, 64, 125, 216, 343]
train_lulesh_iterations: list[int] = [8, 16, 32, 64, 128]
train_lulesh_sizes: list[int] = [16, 24, 32, 48]
test_lulesh_processes: list[int] = [512, 729, 1000]
test_lulesh_iterations: list[int] = [256, 512, 1024]
test_lulesh_sizes: list[int] = [64, 96, 128]
list_modelName: list[str] = [
"modelIp",
"modelLog",
"modelLinAndIp",
"modelLinAndLog",
"modelIpAndLin",
"modelIpAndLog",
"modelLogAndLin",
"modelLogAndIp",
"modelProcessDividedByProblemSize",
"modelProblemSizeDividedByProcess",
"modelInfiniteProductOfProblemSizeMultipliedByProcesses",
"modelInfiniteProductOfProblemSizeDividedByProcesses",
"modelLinearSumOf2elementCombination",
"modelLinearSumOfElementCombinations",
"modelLinearSumOf2elementCombinationWithSquared",
"modelLinearSumOf2elementCombinationWithCubed",
"modelSquareRootOfProcess",
"modelSquareRootTimesOtherElems",
"modelObeyOneParameter",
"modelLin"
# "modelBasicTree",
]
# ipynb形式のライブラリのインポート
%run ./lib/lib.ipynb
# ipynb形式のライブラリノートを.py形式に変更したものをインポート
import lib
import lib.lab_lib
from lib.lab_lib import *
# 生データの入ったCSVファイルの保持されたディレクトリ名を格納している変数
csvDirPath = "./csv_files/"
# NPBのベンチマーク名のリスト
benchmarkNames = ["cg", "ep", "ft", "is", "lu", "mg"]
# NPBのプロセス数
npb_process: list[int] = [2, 4, 8, 16, 32, 64, 128, 256]
train_npb_process: list[int] = npb_process[:-1]
test_npb_process: list[int] = npb_process[-1:]
# NPBのCGの初期変数
cg_na: list[int] = [14000, 30000, 75000, 100000, 1500000]
cg_nonzer: list[int] = [11, 12, 13, 14, 15, 18, 21]
cg_niter: list[int] = [15, 30, 75, 90, 100]
cg_shift: list[int] = [20, 40, 60, 80, 110, 200]
train_cg_na: list[int] = cg_na[:-1]
train_cg_nonzer: list[int] = cg_nonzer[:-1]
train_cg_niter: list[int] = cg_niter[:-1]
train_cg_shift: list[int] = cg_shift[:-1]
test_cg_na: list[int] = cg_na[-1:]
test_cg_nonzer: list[int] = cg_nonzer[-1:]
test_cg_niter: list[int] = cg_niter[-1:]
test_cg_shift: list[int] = cg_shift[-1:]
# LULESH ベンチマークプログラムのプロセス数・問題サイズ・イテレーション数
lulesh_processes: list[int] = [8, 27, 64, 125, 216, 343, 512]
lulesh_iterations: list[int] = [8, 16, 32, 64, 128, 256]
lulesh_sizes: list[int] = [16, 24, 32, 48, 64, 128]
train_lulesh_processes: list[int] = [8, 27, 64, 125, 216, 343]
train_lulesh_iterations: list[int] = [8, 16, 32, 64, 128]
train_lulesh_sizes: list[int] = [16, 24, 32, 48]
test_lulesh_processes: list[int] = [512, 729, 1000]
test_lulesh_iterations: list[int] = [256, 512, 1024]
test_lulesh_sizes: list[int] = [64, 96, 128]
# Extra-Pのオプション
modelerNames: list[str] = [
# "refining",
"multi-parameter",
"default",
# "basic --options poly_exponents=-1,0,1,2,3 log_exponents=0,1 force_combination_exponents=1 allow_negative_exponents=1"
]
modelerOption: str = """ --options \#spm=Basic \#spo=poly_exponents=-1,0,1,2,3,log_exponents=0,1,force_combination_exponents=1,allow_negative_exponents=True"""
list_modelName: list[str] = [
"modelIp",
"modelLog",
"modelLinAndIp",
"modelLinAndLog",
"modelIpAndLin",
"modelIpAndLog",
"modelLogAndLin",
"modelLogAndIp",
"modelProcessDividedByProblemSize",
"modelProblemSizeDividedByProcess",
"modelInfiniteProductOfProblemSizeMultipliedByProcesses",
"modelInfiniteProductOfProblemSizeDividedByProcesses",
"modelLinearSumOf2elementCombination",
"modelLinearSumOfElementCombinations",
"modelLinearSumOf2elementCombinationWithSquared",
"modelLinearSumOf2elementCombinationWithCubed",
"modelSquareRootOfProcess",
"modelSquareRootTimesOtherElems",
"modelObeyOneParameter",
"modelLin"
# "modelBasicTree",
]
list_csvDir = [
"./csv_files/lulesh_1st/",
"./csv_files/lulesh_2nd/",
"./csv_files/lulesh_3rd/",
]
DEBUG:__main__:hello DEBUG:__main__:hello
# LULESH
expVar: list[str] = ["process", "iteration", "size"]
resVar: str = "Exclusive"
trainDF: pd.DataFrame = ret_averaged_rawDF_lulesh(
list_process=train_lulesh_processes,
list_iteration=train_lulesh_iterations,
list_size=train_lulesh_sizes,
list_csvDir=list_csvDir,
resVar=resVar,
)
testDF: pd.DataFrame = ret_averaged_rawDF_lulesh(
list_process=test_lulesh_processes,
list_iteration=test_lulesh_iterations,
list_size=test_lulesh_sizes,
list_csvDir=list_csvDir,
resVar=resVar,
)
testDF = testDF.reset_index()
trainDF = trainDF.reset_index()
testDF["functionName"] = testDF["Name"]
trainDF["functionName"] = trainDF["Name"]
functionNames: list[str] = sorted(list(set(trainDF["Name"])))
dict_symbols = {}
for elem in expVar:
dict_symbols[elem] = symbols(elem, real=True)
target_env = [
(dict_symbols["size"], test_lulesh_sizes[-1]),
(dict_symbols["iteration"], test_lulesh_iterations[-1]),
(dict_symbols["process"], test_lulesh_processes[-1]),
]
# Extra-P による関数コール回数予測
resVar: str = "#Call"
expVar: list[str] = ["process", "iteration", "size"]
dict_models_perFunc: dict[str, dict[str, str]] = {}
for functionName in functionNames:
trainDF_perFunc: pd.DataFrame = trainDF[
trainDF["Name"] == functionName
].reset_index()
str_ExtraPinputData_call: str = gen_ExtraPinputDataFromDF(
inputDF=trainDF_perFunc,
expVar=expVar,
resVar=resVar,
)
# モデル格納用の辞書
dictModels: dict[str, str] = {}
# Extra-P によるモデルの構築
converted_functionName: str = re.sub(
r'[\\|/|:|?|.|"|<|>|\|\(|\)|]', "-", functionName
)
fileName: str = f"input_lulesh_@{converted_functionName}"
fileDir: str = f"./extra-p_docker/share/"
filePath: str = fileDir + fileName
print(f"functionName = {functionName}")
print(f"converted_functionName = {converted_functionName}")
print(f"filePath = {filePath}")
with open(file=filePath, mode="w") as f:
f.write(str_ExtraPinputData_call)
for modelerName in modelerNames:
print(f"extrap --text {filePath} --modeler {modelerName} {modelerOption}")
str_resFromExtraP: str = subprocess.run(
f"extrap --text {filePath} --modeler {modelerName} {modelerOption} | grep Model",
stdout=subprocess.PIPE,
text=True,
shell=True,
).stdout
str_resFromExtraP = str_resFromExtraP.replace("Model: ", "")
str_resFromExtraP = convert_log(str_resFromExtraP)
model_fromExtraP = sympify(str_resFromExtraP, locals=dict_symbols)
dictModels[modelerName] = model_fromExtraP
# 提案手法によるモデルの構築
bestModelDict: dict = return_bestModelObject(
inputDF=trainDF_perFunc,
list_expVar=expVar,
list_resVar=[resVar],
list_modelName=list_modelName,
)
dictModels["proposal"] = bestModelDict["object"]
dict_models_perFunc[functionName] = dictModels
functionName = .TAU_application converted_functionName = -TAU_application filePath = ./extra-p_docker/share/input_lulesh_@-TAU_application extrap --text ./extra-p_docker/share/input_lulesh_@-TAU_application --modeler multi-parameter --options \#spm=Basic \#spo=poly_exponents=-1,0,1,2,3,log_exponents=0,1,force_combination_exponents=1,allow_negative_exponents=True
Loading file: 100%|██████████| [00:00<00:00, Validating experiment] Generating models: | | [00:00<?]/usr/local/lib/python3.10/site-packages/extrap/modelers/single_parameter/basic.py:273: UserWarning: Number of measurements for a parameter needs to be at least 5 in order to create a performance model. warnings.warn( Generating models: 100%|██████████| [00:00<00:00]
extrap --text ./extra-p_docker/share/input_lulesh_@-TAU_application --modeler default --options \#spm=Basic \#spo=poly_exponents=-1,0,1,2,3,log_exponents=0,1,force_combination_exponents=1,allow_negative_exponents=True
Loading file: 100%|██████████| [00:00<00:00, Validating experiment]
Generating models: | | [00:00<?]/usr/local/lib/python3.10/site-packages/extrap/modelers/single_parameter/basic.py:273: UserWarning: Number of measurements for a parameter needs to be at least 5 in order to create a performance model.
warnings.warn(
Generating models: 100%|██████████| [00:00<00:00]
/usr/local/lib/python3.10/site-packages/scipy/optimize/_minpack_py.py:881: OptimizeWarning: Covariance of the parameters could not be estimated
warnings.warn('Covariance of the parameters could not be estimated',
/usr/local/lib/python3.10/site-packages/scipy/optimize/_minpack_py.py:881: OptimizeWarning: Covariance of the parameters could not be estimated
warnings.warn('Covariance of the parameters could not be estimated',
/usr/local/lib/python3.10/site-packages/scipy/optimize/_minpack_py.py:881: OptimizeWarning: Covariance of the parameters could not be estimated
warnings.warn('Covariance of the parameters could not be estimated',
functionName = MPI_Allreduce() converted_functionName = MPI_Allreduce-- filePath = ./extra-p_docker/share/input_lulesh_@MPI_Allreduce-- extrap --text ./extra-p_docker/share/input_lulesh_@MPI_Allreduce-- --modeler multi-parameter --options \#spm=Basic \#spo=poly_exponents=-1,0,1,2,3,log_exponents=0,1,force_combination_exponents=1,allow_negative_exponents=True
Loading file: 100%|██████████| [00:00<00:00, Validating experiment] Generating models: | | [00:00<?]/usr/local/lib/python3.10/site-packages/extrap/modelers/single_parameter/basic.py:273: UserWarning: Number of measurements for a parameter needs to be at least 5 in order to create a performance model. warnings.warn( Generating models: 100%|██████████| [00:00<00:00]
extrap --text ./extra-p_docker/share/input_lulesh_@MPI_Allreduce-- --modeler default --options \#spm=Basic \#spo=poly_exponents=-1,0,1,2,3,log_exponents=0,1,force_combination_exponents=1,allow_negative_exponents=True
Loading file: 100%|██████████| [00:00<00:00, Validating experiment] Generating models: | | [00:00<?]/usr/local/lib/python3.10/site-packages/extrap/modelers/single_parameter/basic.py:273: UserWarning: Number of measurements for a parameter needs to be at least 5 in order to create a performance model. warnings.warn( Generating models: 100%|██████████| [00:00<00:00]
functionName = MPI_Barrier() converted_functionName = MPI_Barrier-- filePath = ./extra-p_docker/share/input_lulesh_@MPI_Barrier-- extrap --text ./extra-p_docker/share/input_lulesh_@MPI_Barrier-- --modeler multi-parameter --options \#spm=Basic \#spo=poly_exponents=-1,0,1,2,3,log_exponents=0,1,force_combination_exponents=1,allow_negative_exponents=True
Loading file: 100%|██████████| [00:00<00:00, Validating experiment] Generating models: | | [00:00<?]/usr/local/lib/python3.10/site-packages/extrap/modelers/single_parameter/basic.py:273: UserWarning: Number of measurements for a parameter needs to be at least 5 in order to create a performance model. warnings.warn( Generating models: 100%|██████████| [00:00<00:00]
extrap --text ./extra-p_docker/share/input_lulesh_@MPI_Barrier-- --modeler default --options \#spm=Basic \#spo=poly_exponents=-1,0,1,2,3,log_exponents=0,1,force_combination_exponents=1,allow_negative_exponents=True
Loading file: 100%|██████████| [00:00<00:00, Validating experiment]
Generating models: | | [00:00<?]/usr/local/lib/python3.10/site-packages/extrap/modelers/single_parameter/basic.py:273: UserWarning: Number of measurements for a parameter needs to be at least 5 in order to create a performance model.
warnings.warn(
Generating models: 100%|██████████| [00:00<00:00]
/usr/local/lib/python3.10/site-packages/scipy/optimize/_minpack_py.py:881: OptimizeWarning: Covariance of the parameters could not be estimated
warnings.warn('Covariance of the parameters could not be estimated',
/usr/local/lib/python3.10/site-packages/scipy/optimize/_minpack_py.py:881: OptimizeWarning: Covariance of the parameters could not be estimated
warnings.warn('Covariance of the parameters could not be estimated',
/usr/local/lib/python3.10/site-packages/scipy/optimize/_minpack_py.py:881: OptimizeWarning: Covariance of the parameters could not be estimated
warnings.warn('Covariance of the parameters could not be estimated',
functionName = MPI_Comm_rank() converted_functionName = MPI_Comm_rank-- filePath = ./extra-p_docker/share/input_lulesh_@MPI_Comm_rank-- extrap --text ./extra-p_docker/share/input_lulesh_@MPI_Comm_rank-- --modeler multi-parameter --options \#spm=Basic \#spo=poly_exponents=-1,0,1,2,3,log_exponents=0,1,force_combination_exponents=1,allow_negative_exponents=True
Loading file: 100%|██████████| [00:00<00:00, Validating experiment] Generating models: | | [00:00<?]/usr/local/lib/python3.10/site-packages/extrap/modelers/single_parameter/basic.py:273: UserWarning: Number of measurements for a parameter needs to be at least 5 in order to create a performance model. warnings.warn( Generating models: 100%|██████████| [00:00<00:00]
extrap --text ./extra-p_docker/share/input_lulesh_@MPI_Comm_rank-- --modeler default --options \#spm=Basic \#spo=poly_exponents=-1,0,1,2,3,log_exponents=0,1,force_combination_exponents=1,allow_negative_exponents=True
Loading file: 100%|██████████| [00:00<00:00, Validating experiment] Generating models: | | [00:00<?]/usr/local/lib/python3.10/site-packages/extrap/modelers/single_parameter/basic.py:273: UserWarning: Number of measurements for a parameter needs to be at least 5 in order to create a performance model. warnings.warn( Generating models: 100%|██████████| [00:00<00:00]
functionName = MPI_Comm_size() converted_functionName = MPI_Comm_size-- filePath = ./extra-p_docker/share/input_lulesh_@MPI_Comm_size-- extrap --text ./extra-p_docker/share/input_lulesh_@MPI_Comm_size-- --modeler multi-parameter --options \#spm=Basic \#spo=poly_exponents=-1,0,1,2,3,log_exponents=0,1,force_combination_exponents=1,allow_negative_exponents=True
Loading file: 100%|██████████| [00:00<00:00, Validating experiment] Generating models: | | [00:00<?]/usr/local/lib/python3.10/site-packages/extrap/modelers/single_parameter/basic.py:273: UserWarning: Number of measurements for a parameter needs to be at least 5 in order to create a performance model. warnings.warn( Generating models: 100%|██████████| [00:00<00:00]
extrap --text ./extra-p_docker/share/input_lulesh_@MPI_Comm_size-- --modeler default --options \#spm=Basic \#spo=poly_exponents=-1,0,1,2,3,log_exponents=0,1,force_combination_exponents=1,allow_negative_exponents=True
Loading file: 100%|██████████| [00:00<00:00, Validating experiment]
Generating models: | | [00:00<?]/usr/local/lib/python3.10/site-packages/extrap/modelers/single_parameter/basic.py:273: UserWarning: Number of measurements for a parameter needs to be at least 5 in order to create a performance model.
warnings.warn(
Generating models: 100%|██████████| [00:00<00:00]
/usr/local/lib/python3.10/site-packages/scipy/optimize/_minpack_py.py:881: OptimizeWarning: Covariance of the parameters could not be estimated
warnings.warn('Covariance of the parameters could not be estimated',
/usr/local/lib/python3.10/site-packages/scipy/optimize/_minpack_py.py:881: OptimizeWarning: Covariance of the parameters could not be estimated
warnings.warn('Covariance of the parameters could not be estimated',
/usr/local/lib/python3.10/site-packages/scipy/optimize/_minpack_py.py:881: OptimizeWarning: Covariance of the parameters could not be estimated
warnings.warn('Covariance of the parameters could not be estimated',
functionName = MPI_Finalize() converted_functionName = MPI_Finalize-- filePath = ./extra-p_docker/share/input_lulesh_@MPI_Finalize-- extrap --text ./extra-p_docker/share/input_lulesh_@MPI_Finalize-- --modeler multi-parameter --options \#spm=Basic \#spo=poly_exponents=-1,0,1,2,3,log_exponents=0,1,force_combination_exponents=1,allow_negative_exponents=True
Loading file: 100%|██████████| [00:00<00:00, Validating experiment] Generating models: | | [00:00<?]/usr/local/lib/python3.10/site-packages/extrap/modelers/single_parameter/basic.py:273: UserWarning: Number of measurements for a parameter needs to be at least 5 in order to create a performance model. warnings.warn( Generating models: 100%|██████████| [00:00<00:00]
extrap --text ./extra-p_docker/share/input_lulesh_@MPI_Finalize-- --modeler default --options \#spm=Basic \#spo=poly_exponents=-1,0,1,2,3,log_exponents=0,1,force_combination_exponents=1,allow_negative_exponents=True
Loading file: 100%|██████████| [00:00<00:00, Validating experiment]
Generating models: | | [00:00<?]/usr/local/lib/python3.10/site-packages/extrap/modelers/single_parameter/basic.py:273: UserWarning: Number of measurements for a parameter needs to be at least 5 in order to create a performance model.
warnings.warn(
Generating models: 100%|██████████| [00:00<00:00]
/usr/local/lib/python3.10/site-packages/scipy/optimize/_minpack_py.py:881: OptimizeWarning: Covariance of the parameters could not be estimated
warnings.warn('Covariance of the parameters could not be estimated',
/usr/local/lib/python3.10/site-packages/scipy/optimize/_minpack_py.py:881: OptimizeWarning: Covariance of the parameters could not be estimated
warnings.warn('Covariance of the parameters could not be estimated',
/usr/local/lib/python3.10/site-packages/scipy/optimize/_minpack_py.py:881: OptimizeWarning: Covariance of the parameters could not be estimated
warnings.warn('Covariance of the parameters could not be estimated',
functionName = MPI_Init() converted_functionName = MPI_Init-- filePath = ./extra-p_docker/share/input_lulesh_@MPI_Init-- extrap --text ./extra-p_docker/share/input_lulesh_@MPI_Init-- --modeler multi-parameter --options \#spm=Basic \#spo=poly_exponents=-1,0,1,2,3,log_exponents=0,1,force_combination_exponents=1,allow_negative_exponents=True
Loading file: 100%|██████████| [00:00<00:00, Validating experiment] Generating models: | | [00:00<?]/usr/local/lib/python3.10/site-packages/extrap/modelers/single_parameter/basic.py:273: UserWarning: Number of measurements for a parameter needs to be at least 5 in order to create a performance model. warnings.warn( Generating models: 100%|██████████| [00:00<00:00]
extrap --text ./extra-p_docker/share/input_lulesh_@MPI_Init-- --modeler default --options \#spm=Basic \#spo=poly_exponents=-1,0,1,2,3,log_exponents=0,1,force_combination_exponents=1,allow_negative_exponents=True
Loading file: 100%|██████████| [00:00<00:00, Validating experiment]
Generating models: | | [00:00<?]/usr/local/lib/python3.10/site-packages/extrap/modelers/single_parameter/basic.py:273: UserWarning: Number of measurements for a parameter needs to be at least 5 in order to create a performance model.
warnings.warn(
Generating models: 100%|██████████| [00:00<00:00]
/usr/local/lib/python3.10/site-packages/scipy/optimize/_minpack_py.py:881: OptimizeWarning: Covariance of the parameters could not be estimated
warnings.warn('Covariance of the parameters could not be estimated',
/usr/local/lib/python3.10/site-packages/scipy/optimize/_minpack_py.py:881: OptimizeWarning: Covariance of the parameters could not be estimated
warnings.warn('Covariance of the parameters could not be estimated',
/usr/local/lib/python3.10/site-packages/scipy/optimize/_minpack_py.py:881: OptimizeWarning: Covariance of the parameters could not be estimated
warnings.warn('Covariance of the parameters could not be estimated',
functionName = MPI_Irecv() converted_functionName = MPI_Irecv-- filePath = ./extra-p_docker/share/input_lulesh_@MPI_Irecv-- extrap --text ./extra-p_docker/share/input_lulesh_@MPI_Irecv-- --modeler multi-parameter --options \#spm=Basic \#spo=poly_exponents=-1,0,1,2,3,log_exponents=0,1,force_combination_exponents=1,allow_negative_exponents=True
Loading file: 100%|██████████| [00:00<00:00, Validating experiment] Generating models: | | [00:00<?]/usr/local/lib/python3.10/site-packages/extrap/modelers/single_parameter/basic.py:273: UserWarning: Number of measurements for a parameter needs to be at least 5 in order to create a performance model. warnings.warn( Generating models: 100%|██████████| [00:00<00:00]
extrap --text ./extra-p_docker/share/input_lulesh_@MPI_Irecv-- --modeler default --options \#spm=Basic \#spo=poly_exponents=-1,0,1,2,3,log_exponents=0,1,force_combination_exponents=1,allow_negative_exponents=True
Loading file: 100%|██████████| [00:00<00:00, Validating experiment] Generating models: | | [00:00<?]/usr/local/lib/python3.10/site-packages/extrap/modelers/single_parameter/basic.py:273: UserWarning: Number of measurements for a parameter needs to be at least 5 in order to create a performance model. warnings.warn( Generating models: 100%|██████████| [00:00<00:00]
functionName = MPI_Isend() converted_functionName = MPI_Isend-- filePath = ./extra-p_docker/share/input_lulesh_@MPI_Isend-- extrap --text ./extra-p_docker/share/input_lulesh_@MPI_Isend-- --modeler multi-parameter --options \#spm=Basic \#spo=poly_exponents=-1,0,1,2,3,log_exponents=0,1,force_combination_exponents=1,allow_negative_exponents=True
Loading file: 100%|██████████| [00:00<00:00, Validating experiment] Generating models: | | [00:00<?]/usr/local/lib/python3.10/site-packages/extrap/modelers/single_parameter/basic.py:273: UserWarning: Number of measurements for a parameter needs to be at least 5 in order to create a performance model. warnings.warn( Generating models: 100%|██████████| [00:00<00:00]
extrap --text ./extra-p_docker/share/input_lulesh_@MPI_Isend-- --modeler default --options \#spm=Basic \#spo=poly_exponents=-1,0,1,2,3,log_exponents=0,1,force_combination_exponents=1,allow_negative_exponents=True
Loading file: 100%|██████████| [00:00<00:00, Validating experiment] Generating models: | | [00:00<?]/usr/local/lib/python3.10/site-packages/extrap/modelers/single_parameter/basic.py:273: UserWarning: Number of measurements for a parameter needs to be at least 5 in order to create a performance model. warnings.warn( Generating models: 100%|██████████| [00:00<00:00]
functionName = MPI_Reduce() converted_functionName = MPI_Reduce-- filePath = ./extra-p_docker/share/input_lulesh_@MPI_Reduce-- extrap --text ./extra-p_docker/share/input_lulesh_@MPI_Reduce-- --modeler multi-parameter --options \#spm=Basic \#spo=poly_exponents=-1,0,1,2,3,log_exponents=0,1,force_combination_exponents=1,allow_negative_exponents=True
Loading file: 100%|██████████| [00:00<00:00, Validating experiment] Generating models: | | [00:00<?]/usr/local/lib/python3.10/site-packages/extrap/modelers/single_parameter/basic.py:273: UserWarning: Number of measurements for a parameter needs to be at least 5 in order to create a performance model. warnings.warn( Generating models: 100%|██████████| [00:00<00:00]
extrap --text ./extra-p_docker/share/input_lulesh_@MPI_Reduce-- --modeler default --options \#spm=Basic \#spo=poly_exponents=-1,0,1,2,3,log_exponents=0,1,force_combination_exponents=1,allow_negative_exponents=True
Loading file: 100%|██████████| [00:00<00:00, Validating experiment]
Generating models: | | [00:00<?]/usr/local/lib/python3.10/site-packages/extrap/modelers/single_parameter/basic.py:273: UserWarning: Number of measurements for a parameter needs to be at least 5 in order to create a performance model.
warnings.warn(
Generating models: 100%|██████████| [00:00<00:00]
/usr/local/lib/python3.10/site-packages/scipy/optimize/_minpack_py.py:881: OptimizeWarning: Covariance of the parameters could not be estimated
warnings.warn('Covariance of the parameters could not be estimated',
/usr/local/lib/python3.10/site-packages/scipy/optimize/_minpack_py.py:881: OptimizeWarning: Covariance of the parameters could not be estimated
warnings.warn('Covariance of the parameters could not be estimated',
/usr/local/lib/python3.10/site-packages/scipy/optimize/_minpack_py.py:881: OptimizeWarning: Covariance of the parameters could not be estimated
warnings.warn('Covariance of the parameters could not be estimated',
functionName = MPI_Wait() converted_functionName = MPI_Wait-- filePath = ./extra-p_docker/share/input_lulesh_@MPI_Wait-- extrap --text ./extra-p_docker/share/input_lulesh_@MPI_Wait-- --modeler multi-parameter --options \#spm=Basic \#spo=poly_exponents=-1,0,1,2,3,log_exponents=0,1,force_combination_exponents=1,allow_negative_exponents=True
Loading file: 100%|██████████| [00:00<00:00, Validating experiment] Generating models: | | [00:00<?]/usr/local/lib/python3.10/site-packages/extrap/modelers/single_parameter/basic.py:273: UserWarning: Number of measurements for a parameter needs to be at least 5 in order to create a performance model. warnings.warn( Generating models: 100%|██████████| [00:00<00:00]
extrap --text ./extra-p_docker/share/input_lulesh_@MPI_Wait-- --modeler default --options \#spm=Basic \#spo=poly_exponents=-1,0,1,2,3,log_exponents=0,1,force_combination_exponents=1,allow_negative_exponents=True
Loading file: 100%|██████████| [00:00<00:00, Validating experiment] Generating models: | | [00:00<?]/usr/local/lib/python3.10/site-packages/extrap/modelers/single_parameter/basic.py:273: UserWarning: Number of measurements for a parameter needs to be at least 5 in order to create a performance model. warnings.warn( Generating models: 100%|██████████| [00:00<00:00]
functionName = MPI_Waitall() converted_functionName = MPI_Waitall-- filePath = ./extra-p_docker/share/input_lulesh_@MPI_Waitall-- extrap --text ./extra-p_docker/share/input_lulesh_@MPI_Waitall-- --modeler multi-parameter --options \#spm=Basic \#spo=poly_exponents=-1,0,1,2,3,log_exponents=0,1,force_combination_exponents=1,allow_negative_exponents=True
Loading file: 100%|██████████| [00:00<00:00, Validating experiment] Generating models: | | [00:00<?]/usr/local/lib/python3.10/site-packages/extrap/modelers/single_parameter/basic.py:273: UserWarning: Number of measurements for a parameter needs to be at least 5 in order to create a performance model. warnings.warn( Generating models: 100%|██████████| [00:00<00:00]
extrap --text ./extra-p_docker/share/input_lulesh_@MPI_Waitall-- --modeler default --options \#spm=Basic \#spo=poly_exponents=-1,0,1,2,3,log_exponents=0,1,force_combination_exponents=1,allow_negative_exponents=True
Loading file: 100%|██████████| [00:00<00:00, Validating experiment] Generating models: | | [00:00<?]/usr/local/lib/python3.10/site-packages/extrap/modelers/single_parameter/basic.py:273: UserWarning: Number of measurements for a parameter needs to be at least 5 in order to create a performance model. warnings.warn( Generating models: 100%|██████████| [00:00<00:00]
functionName = Real_t_CalcElemVolume(const converted_functionName = Real_t_CalcElemVolume-const filePath = ./extra-p_docker/share/input_lulesh_@Real_t_CalcElemVolume-const extrap --text ./extra-p_docker/share/input_lulesh_@Real_t_CalcElemVolume-const --modeler multi-parameter --options \#spm=Basic \#spo=poly_exponents=-1,0,1,2,3,log_exponents=0,1,force_combination_exponents=1,allow_negative_exponents=True
Loading file: 100%|██████████| [00:00<00:00, Validating experiment] Generating models: | | [00:00<?]/usr/local/lib/python3.10/site-packages/extrap/modelers/single_parameter/basic.py:273: UserWarning: Number of measurements for a parameter needs to be at least 5 in order to create a performance model. warnings.warn( Generating models: 100%|██████████| [00:00<00:00]
extrap --text ./extra-p_docker/share/input_lulesh_@Real_t_CalcElemVolume-const --modeler default --options \#spm=Basic \#spo=poly_exponents=-1,0,1,2,3,log_exponents=0,1,force_combination_exponents=1,allow_negative_exponents=True
Loading file: 100%|██████████| [00:00<00:00, Validating experiment] Generating models: | | [00:00<?]/usr/local/lib/python3.10/site-packages/extrap/modelers/single_parameter/basic.py:273: UserWarning: Number of measurements for a parameter needs to be at least 5 in order to create a performance model. warnings.warn( Generating models: 100%|██████████| [00:00<00:00]
functionName = StrToInt converted_functionName = StrToInt filePath = ./extra-p_docker/share/input_lulesh_@StrToInt extrap --text ./extra-p_docker/share/input_lulesh_@StrToInt --modeler multi-parameter --options \#spm=Basic \#spo=poly_exponents=-1,0,1,2,3,log_exponents=0,1,force_combination_exponents=1,allow_negative_exponents=True
Loading file: 100%|██████████| [00:00<00:00, Validating experiment] Generating models: | | [00:00<?]/usr/local/lib/python3.10/site-packages/extrap/modelers/single_parameter/basic.py:273: UserWarning: Number of measurements for a parameter needs to be at least 5 in order to create a performance model. warnings.warn( Generating models: 100%|██████████| [00:00<00:00]
extrap --text ./extra-p_docker/share/input_lulesh_@StrToInt --modeler default --options \#spm=Basic \#spo=poly_exponents=-1,0,1,2,3,log_exponents=0,1,force_combination_exponents=1,allow_negative_exponents=True
Loading file: 100%|██████████| [00:00<00:00, Validating experiment]
Generating models: | | [00:00<?]/usr/local/lib/python3.10/site-packages/extrap/modelers/single_parameter/basic.py:273: UserWarning: Number of measurements for a parameter needs to be at least 5 in order to create a performance model.
warnings.warn(
Generating models: 100%|██████████| [00:00<00:00]
/usr/local/lib/python3.10/site-packages/scipy/optimize/_minpack_py.py:881: OptimizeWarning: Covariance of the parameters could not be estimated
warnings.warn('Covariance of the parameters could not be estimated',
/usr/local/lib/python3.10/site-packages/scipy/optimize/_minpack_py.py:881: OptimizeWarning: Covariance of the parameters could not be estimated
warnings.warn('Covariance of the parameters could not be estimated',
functionName = int_main(int_char_**) converted_functionName = int_main-int_char_**- filePath = ./extra-p_docker/share/input_lulesh_@int_main-int_char_**- extrap --text ./extra-p_docker/share/input_lulesh_@int_main-int_char_**- --modeler multi-parameter --options \#spm=Basic \#spo=poly_exponents=-1,0,1,2,3,log_exponents=0,1,force_combination_exponents=1,allow_negative_exponents=True
Loading file: 100%|██████████| [00:00<00:00, Validating experiment] Generating models: | | [00:00<?]/usr/local/lib/python3.10/site-packages/extrap/modelers/single_parameter/basic.py:273: UserWarning: Number of measurements for a parameter needs to be at least 5 in order to create a performance model. warnings.warn( Generating models: 100%|██████████| [00:00<00:00]
extrap --text ./extra-p_docker/share/input_lulesh_@int_main-int_char_**- --modeler default --options \#spm=Basic \#spo=poly_exponents=-1,0,1,2,3,log_exponents=0,1,force_combination_exponents=1,allow_negative_exponents=True
Loading file: 100%|██████████| [00:00<00:00, Validating experiment]
Generating models: | | [00:00<?]/usr/local/lib/python3.10/site-packages/extrap/modelers/single_parameter/basic.py:273: UserWarning: Number of measurements for a parameter needs to be at least 5 in order to create a performance model.
warnings.warn(
Generating models: 100%|██████████| [00:00<00:00]
/usr/local/lib/python3.10/site-packages/scipy/optimize/_minpack_py.py:881: OptimizeWarning: Covariance of the parameters could not be estimated
warnings.warn('Covariance of the parameters could not be estimated',
/usr/local/lib/python3.10/site-packages/scipy/optimize/_minpack_py.py:881: OptimizeWarning: Covariance of the parameters could not be estimated
warnings.warn('Covariance of the parameters could not be estimated',
/usr/local/lib/python3.10/site-packages/scipy/optimize/_minpack_py.py:881: OptimizeWarning: Covariance of the parameters could not be estimated
warnings.warn('Covariance of the parameters could not be estimated',
functionName = void_CalcKinematicsForElems(Domain converted_functionName = void_CalcKinematicsForElems-Domain filePath = ./extra-p_docker/share/input_lulesh_@void_CalcKinematicsForElems-Domain extrap --text ./extra-p_docker/share/input_lulesh_@void_CalcKinematicsForElems-Domain --modeler multi-parameter --options \#spm=Basic \#spo=poly_exponents=-1,0,1,2,3,log_exponents=0,1,force_combination_exponents=1,allow_negative_exponents=True
Loading file: 100%|██████████| [00:00<00:00, Validating experiment] Generating models: | | [00:00<?]/usr/local/lib/python3.10/site-packages/extrap/modelers/single_parameter/basic.py:273: UserWarning: Number of measurements for a parameter needs to be at least 5 in order to create a performance model. warnings.warn( Generating models: 100%|██████████| [00:00<00:00]
extrap --text ./extra-p_docker/share/input_lulesh_@void_CalcKinematicsForElems-Domain --modeler default --options \#spm=Basic \#spo=poly_exponents=-1,0,1,2,3,log_exponents=0,1,force_combination_exponents=1,allow_negative_exponents=True
Loading file: 100%|██████████| [00:00<00:00, Validating experiment] Generating models: | | [00:00<?]/usr/local/lib/python3.10/site-packages/extrap/modelers/single_parameter/basic.py:273: UserWarning: Number of measurements for a parameter needs to be at least 5 in order to create a performance model. warnings.warn( Generating models: 100%|██████████| [00:00<00:00]
functionName = void_CommMonoQ(Domain converted_functionName = void_CommMonoQ-Domain filePath = ./extra-p_docker/share/input_lulesh_@void_CommMonoQ-Domain extrap --text ./extra-p_docker/share/input_lulesh_@void_CommMonoQ-Domain --modeler multi-parameter --options \#spm=Basic \#spo=poly_exponents=-1,0,1,2,3,log_exponents=0,1,force_combination_exponents=1,allow_negative_exponents=True
Loading file: 100%|██████████| [00:00<00:00, Validating experiment] Generating models: | | [00:00<?]/usr/local/lib/python3.10/site-packages/extrap/modelers/single_parameter/basic.py:273: UserWarning: Number of measurements for a parameter needs to be at least 5 in order to create a performance model. warnings.warn( Generating models: 100%|██████████| [00:00<00:00]
extrap --text ./extra-p_docker/share/input_lulesh_@void_CommMonoQ-Domain --modeler default --options \#spm=Basic \#spo=poly_exponents=-1,0,1,2,3,log_exponents=0,1,force_combination_exponents=1,allow_negative_exponents=True
Loading file: 100%|██████████| [00:00<00:00, Validating experiment] Generating models: | | [00:00<?]/usr/local/lib/python3.10/site-packages/extrap/modelers/single_parameter/basic.py:273: UserWarning: Number of measurements for a parameter needs to be at least 5 in order to create a performance model. warnings.warn( Generating models: 100%|██████████| [00:00<00:00]
functionName = void_CommRecv(Domain converted_functionName = void_CommRecv-Domain filePath = ./extra-p_docker/share/input_lulesh_@void_CommRecv-Domain extrap --text ./extra-p_docker/share/input_lulesh_@void_CommRecv-Domain --modeler multi-parameter --options \#spm=Basic \#spo=poly_exponents=-1,0,1,2,3,log_exponents=0,1,force_combination_exponents=1,allow_negative_exponents=True
Loading file: 100%|██████████| [00:00<00:00, Validating experiment] Generating models: | | [00:00<?]/usr/local/lib/python3.10/site-packages/extrap/modelers/single_parameter/basic.py:273: UserWarning: Number of measurements for a parameter needs to be at least 5 in order to create a performance model. warnings.warn( Generating models: 100%|██████████| [00:00<00:00]
extrap --text ./extra-p_docker/share/input_lulesh_@void_CommRecv-Domain --modeler default --options \#spm=Basic \#spo=poly_exponents=-1,0,1,2,3,log_exponents=0,1,force_combination_exponents=1,allow_negative_exponents=True
Loading file: 100%|██████████| [00:00<00:00, Validating experiment] Generating models: | | [00:00<?]/usr/local/lib/python3.10/site-packages/extrap/modelers/single_parameter/basic.py:273: UserWarning: Number of measurements for a parameter needs to be at least 5 in order to create a performance model. warnings.warn( Generating models: 100%|██████████| [00:00<00:00]
functionName = void_CommSBN(Domain converted_functionName = void_CommSBN-Domain filePath = ./extra-p_docker/share/input_lulesh_@void_CommSBN-Domain extrap --text ./extra-p_docker/share/input_lulesh_@void_CommSBN-Domain --modeler multi-parameter --options \#spm=Basic \#spo=poly_exponents=-1,0,1,2,3,log_exponents=0,1,force_combination_exponents=1,allow_negative_exponents=True
Loading file: 100%|██████████| [00:00<00:00, Validating experiment] Generating models: | | [00:00<?]/usr/local/lib/python3.10/site-packages/extrap/modelers/single_parameter/basic.py:273: UserWarning: Number of measurements for a parameter needs to be at least 5 in order to create a performance model. warnings.warn( Generating models: 100%|██████████| [00:00<00:00]
extrap --text ./extra-p_docker/share/input_lulesh_@void_CommSBN-Domain --modeler default --options \#spm=Basic \#spo=poly_exponents=-1,0,1,2,3,log_exponents=0,1,force_combination_exponents=1,allow_negative_exponents=True
Loading file: 100%|██████████| [00:00<00:00, Validating experiment] Generating models: | | [00:00<?]/usr/local/lib/python3.10/site-packages/extrap/modelers/single_parameter/basic.py:273: UserWarning: Number of measurements for a parameter needs to be at least 5 in order to create a performance model. warnings.warn( Generating models: 100%|██████████| [00:00<00:00]
functionName = void_CommSend(Domain converted_functionName = void_CommSend-Domain filePath = ./extra-p_docker/share/input_lulesh_@void_CommSend-Domain extrap --text ./extra-p_docker/share/input_lulesh_@void_CommSend-Domain --modeler multi-parameter --options \#spm=Basic \#spo=poly_exponents=-1,0,1,2,3,log_exponents=0,1,force_combination_exponents=1,allow_negative_exponents=True
Loading file: 100%|██████████| [00:00<00:00, Validating experiment] Generating models: | | [00:00<?]/usr/local/lib/python3.10/site-packages/extrap/modelers/single_parameter/basic.py:273: UserWarning: Number of measurements for a parameter needs to be at least 5 in order to create a performance model. warnings.warn( Generating models: 100%|██████████| [00:00<00:00]
extrap --text ./extra-p_docker/share/input_lulesh_@void_CommSend-Domain --modeler default --options \#spm=Basic \#spo=poly_exponents=-1,0,1,2,3,log_exponents=0,1,force_combination_exponents=1,allow_negative_exponents=True
Loading file: 100%|██████████| [00:00<00:00, Validating experiment] Generating models: | | [00:00<?]/usr/local/lib/python3.10/site-packages/extrap/modelers/single_parameter/basic.py:273: UserWarning: Number of measurements for a parameter needs to be at least 5 in order to create a performance model. warnings.warn( Generating models: 100%|██████████| [00:00<00:00]
functionName = void_CommSyncPosVel(Domain converted_functionName = void_CommSyncPosVel-Domain filePath = ./extra-p_docker/share/input_lulesh_@void_CommSyncPosVel-Domain extrap --text ./extra-p_docker/share/input_lulesh_@void_CommSyncPosVel-Domain --modeler multi-parameter --options \#spm=Basic \#spo=poly_exponents=-1,0,1,2,3,log_exponents=0,1,force_combination_exponents=1,allow_negative_exponents=True
Loading file: 100%|██████████| [00:00<00:00, Validating experiment] Generating models: | | [00:00<?]/usr/local/lib/python3.10/site-packages/extrap/modelers/single_parameter/basic.py:273: UserWarning: Number of measurements for a parameter needs to be at least 5 in order to create a performance model. warnings.warn( Generating models: 100%|██████████| [00:00<00:00]
extrap --text ./extra-p_docker/share/input_lulesh_@void_CommSyncPosVel-Domain --modeler default --options \#spm=Basic \#spo=poly_exponents=-1,0,1,2,3,log_exponents=0,1,force_combination_exponents=1,allow_negative_exponents=True
Loading file: 100%|██████████| [00:00<00:00, Validating experiment] Generating models: | | [00:00<?]/usr/local/lib/python3.10/site-packages/extrap/modelers/single_parameter/basic.py:273: UserWarning: Number of measurements for a parameter needs to be at least 5 in order to create a performance model. warnings.warn( Generating models: 100%|██████████| [00:00<00:00]
functionName = void_Domain::BuildMesh(Int_t_Int_t_Int_t) converted_functionName = void_Domain--BuildMesh-Int_t_Int_t_Int_t- filePath = ./extra-p_docker/share/input_lulesh_@void_Domain--BuildMesh-Int_t_Int_t_Int_t- extrap --text ./extra-p_docker/share/input_lulesh_@void_Domain--BuildMesh-Int_t_Int_t_Int_t- --modeler multi-parameter --options \#spm=Basic \#spo=poly_exponents=-1,0,1,2,3,log_exponents=0,1,force_combination_exponents=1,allow_negative_exponents=True
Loading file: 100%|██████████| [00:00<00:00, Validating experiment] Generating models: | | [00:00<?]/usr/local/lib/python3.10/site-packages/extrap/modelers/single_parameter/basic.py:273: UserWarning: Number of measurements for a parameter needs to be at least 5 in order to create a performance model. warnings.warn( Generating models: 100%|██████████| [00:00<00:00]
extrap --text ./extra-p_docker/share/input_lulesh_@void_Domain--BuildMesh-Int_t_Int_t_Int_t- --modeler default --options \#spm=Basic \#spo=poly_exponents=-1,0,1,2,3,log_exponents=0,1,force_combination_exponents=1,allow_negative_exponents=True
Loading file: 100%|██████████| [00:00<00:00, Validating experiment]
Generating models: | | [00:00<?]/usr/local/lib/python3.10/site-packages/extrap/modelers/single_parameter/basic.py:273: UserWarning: Number of measurements for a parameter needs to be at least 5 in order to create a performance model.
warnings.warn(
Generating models: 100%|██████████| [00:00<00:00]
/usr/local/lib/python3.10/site-packages/scipy/optimize/_minpack_py.py:881: OptimizeWarning: Covariance of the parameters could not be estimated
warnings.warn('Covariance of the parameters could not be estimated',
/usr/local/lib/python3.10/site-packages/scipy/optimize/_minpack_py.py:881: OptimizeWarning: Covariance of the parameters could not be estimated
warnings.warn('Covariance of the parameters could not be estimated',
/usr/local/lib/python3.10/site-packages/scipy/optimize/_minpack_py.py:881: OptimizeWarning: Covariance of the parameters could not be estimated
warnings.warn('Covariance of the parameters could not be estimated',
functionName = void_Domain::CreateRegionIndexSets(Int_t_Int_t) converted_functionName = void_Domain--CreateRegionIndexSets-Int_t_Int_t- filePath = ./extra-p_docker/share/input_lulesh_@void_Domain--CreateRegionIndexSets-Int_t_Int_t- extrap --text ./extra-p_docker/share/input_lulesh_@void_Domain--CreateRegionIndexSets-Int_t_Int_t- --modeler multi-parameter --options \#spm=Basic \#spo=poly_exponents=-1,0,1,2,3,log_exponents=0,1,force_combination_exponents=1,allow_negative_exponents=True
Loading file: 100%|██████████| [00:00<00:00, Validating experiment] Generating models: | | [00:00<?]/usr/local/lib/python3.10/site-packages/extrap/modelers/single_parameter/basic.py:273: UserWarning: Number of measurements for a parameter needs to be at least 5 in order to create a performance model. warnings.warn( Generating models: 100%|██████████| [00:00<00:00]
extrap --text ./extra-p_docker/share/input_lulesh_@void_Domain--CreateRegionIndexSets-Int_t_Int_t- --modeler default --options \#spm=Basic \#spo=poly_exponents=-1,0,1,2,3,log_exponents=0,1,force_combination_exponents=1,allow_negative_exponents=True
Loading file: 100%|██████████| [00:00<00:00, Validating experiment]
Generating models: | | [00:00<?]/usr/local/lib/python3.10/site-packages/extrap/modelers/single_parameter/basic.py:273: UserWarning: Number of measurements for a parameter needs to be at least 5 in order to create a performance model.
warnings.warn(
Generating models: 100%|██████████| [00:00<00:00]
/usr/local/lib/python3.10/site-packages/scipy/optimize/_minpack_py.py:881: OptimizeWarning: Covariance of the parameters could not be estimated
warnings.warn('Covariance of the parameters could not be estimated',
/usr/local/lib/python3.10/site-packages/scipy/optimize/_minpack_py.py:881: OptimizeWarning: Covariance of the parameters could not be estimated
warnings.warn('Covariance of the parameters could not be estimated',
/usr/local/lib/python3.10/site-packages/scipy/optimize/_minpack_py.py:881: OptimizeWarning: Covariance of the parameters could not be estimated
warnings.warn('Covariance of the parameters could not be estimated',
functionName = void_Domain::Domain(Int_t_Index_t_Index_t_Index_t_Index_t_Int_t_Int_t_Int_t_Int_t) converted_functionName = void_Domain--Domain-Int_t_Index_t_Index_t_Index_t_Index_t_Int_t_Int_t_Int_t_Int_t- filePath = ./extra-p_docker/share/input_lulesh_@void_Domain--Domain-Int_t_Index_t_Index_t_Index_t_Index_t_Int_t_Int_t_Int_t_Int_t- extrap --text ./extra-p_docker/share/input_lulesh_@void_Domain--Domain-Int_t_Index_t_Index_t_Index_t_Index_t_Int_t_Int_t_Int_t_Int_t- --modeler multi-parameter --options \#spm=Basic \#spo=poly_exponents=-1,0,1,2,3,log_exponents=0,1,force_combination_exponents=1,allow_negative_exponents=True
Loading file: 100%|██████████| [00:00<00:00, Validating experiment] Generating models: | | [00:00<?]/usr/local/lib/python3.10/site-packages/extrap/modelers/single_parameter/basic.py:273: UserWarning: Number of measurements for a parameter needs to be at least 5 in order to create a performance model. warnings.warn( Generating models: 100%|██████████| [00:00<00:00]
extrap --text ./extra-p_docker/share/input_lulesh_@void_Domain--Domain-Int_t_Index_t_Index_t_Index_t_Index_t_Int_t_Int_t_Int_t_Int_t- --modeler default --options \#spm=Basic \#spo=poly_exponents=-1,0,1,2,3,log_exponents=0,1,force_combination_exponents=1,allow_negative_exponents=True
Loading file: 100%|██████████| [00:00<00:00, Validating experiment]
Generating models: | | [00:00<?]/usr/local/lib/python3.10/site-packages/extrap/modelers/single_parameter/basic.py:273: UserWarning: Number of measurements for a parameter needs to be at least 5 in order to create a performance model.
warnings.warn(
Generating models: 100%|██████████| [00:00<00:00]
/usr/local/lib/python3.10/site-packages/scipy/optimize/_minpack_py.py:881: OptimizeWarning: Covariance of the parameters could not be estimated
warnings.warn('Covariance of the parameters could not be estimated',
/usr/local/lib/python3.10/site-packages/scipy/optimize/_minpack_py.py:881: OptimizeWarning: Covariance of the parameters could not be estimated
warnings.warn('Covariance of the parameters could not be estimated',
/usr/local/lib/python3.10/site-packages/scipy/optimize/_minpack_py.py:881: OptimizeWarning: Covariance of the parameters could not be estimated
warnings.warn('Covariance of the parameters could not be estimated',
functionName = void_Domain::SetupBoundaryConditions(Int_t) converted_functionName = void_Domain--SetupBoundaryConditions-Int_t- filePath = ./extra-p_docker/share/input_lulesh_@void_Domain--SetupBoundaryConditions-Int_t- extrap --text ./extra-p_docker/share/input_lulesh_@void_Domain--SetupBoundaryConditions-Int_t- --modeler multi-parameter --options \#spm=Basic \#spo=poly_exponents=-1,0,1,2,3,log_exponents=0,1,force_combination_exponents=1,allow_negative_exponents=True
Loading file: 100%|██████████| [00:00<00:00, Validating experiment] Generating models: | | [00:00<?]/usr/local/lib/python3.10/site-packages/extrap/modelers/single_parameter/basic.py:273: UserWarning: Number of measurements for a parameter needs to be at least 5 in order to create a performance model. warnings.warn( Generating models: 100%|██████████| [00:00<00:00]
extrap --text ./extra-p_docker/share/input_lulesh_@void_Domain--SetupBoundaryConditions-Int_t- --modeler default --options \#spm=Basic \#spo=poly_exponents=-1,0,1,2,3,log_exponents=0,1,force_combination_exponents=1,allow_negative_exponents=True
Loading file: 100%|██████████| [00:00<00:00, Validating experiment]
Generating models: | | [00:00<?]/usr/local/lib/python3.10/site-packages/extrap/modelers/single_parameter/basic.py:273: UserWarning: Number of measurements for a parameter needs to be at least 5 in order to create a performance model.
warnings.warn(
Generating models: 100%|██████████| [00:00<00:00]
/usr/local/lib/python3.10/site-packages/scipy/optimize/_minpack_py.py:881: OptimizeWarning: Covariance of the parameters could not be estimated
warnings.warn('Covariance of the parameters could not be estimated',
/usr/local/lib/python3.10/site-packages/scipy/optimize/_minpack_py.py:881: OptimizeWarning: Covariance of the parameters could not be estimated
warnings.warn('Covariance of the parameters could not be estimated',
/usr/local/lib/python3.10/site-packages/scipy/optimize/_minpack_py.py:881: OptimizeWarning: Covariance of the parameters could not be estimated
warnings.warn('Covariance of the parameters could not be estimated',
functionName = void_Domain::SetupCommBuffers(Int_t) converted_functionName = void_Domain--SetupCommBuffers-Int_t- filePath = ./extra-p_docker/share/input_lulesh_@void_Domain--SetupCommBuffers-Int_t- extrap --text ./extra-p_docker/share/input_lulesh_@void_Domain--SetupCommBuffers-Int_t- --modeler multi-parameter --options \#spm=Basic \#spo=poly_exponents=-1,0,1,2,3,log_exponents=0,1,force_combination_exponents=1,allow_negative_exponents=True
Loading file: 100%|██████████| [00:00<00:00, Validating experiment] Generating models: | | [00:00<?]/usr/local/lib/python3.10/site-packages/extrap/modelers/single_parameter/basic.py:273: UserWarning: Number of measurements for a parameter needs to be at least 5 in order to create a performance model. warnings.warn( Generating models: 100%|██████████| [00:00<00:00]
extrap --text ./extra-p_docker/share/input_lulesh_@void_Domain--SetupCommBuffers-Int_t- --modeler default --options \#spm=Basic \#spo=poly_exponents=-1,0,1,2,3,log_exponents=0,1,force_combination_exponents=1,allow_negative_exponents=True
Loading file: 100%|██████████| [00:00<00:00, Validating experiment]
Generating models: | | [00:00<?]/usr/local/lib/python3.10/site-packages/extrap/modelers/single_parameter/basic.py:273: UserWarning: Number of measurements for a parameter needs to be at least 5 in order to create a performance model.
warnings.warn(
Generating models: 100%|██████████| [00:00<00:00]
/usr/local/lib/python3.10/site-packages/scipy/optimize/_minpack_py.py:881: OptimizeWarning: Covariance of the parameters could not be estimated
warnings.warn('Covariance of the parameters could not be estimated',
/usr/local/lib/python3.10/site-packages/scipy/optimize/_minpack_py.py:881: OptimizeWarning: Covariance of the parameters could not be estimated
warnings.warn('Covariance of the parameters could not be estimated',
/usr/local/lib/python3.10/site-packages/scipy/optimize/_minpack_py.py:881: OptimizeWarning: Covariance of the parameters could not be estimated
warnings.warn('Covariance of the parameters could not be estimated',
functionName = void_Domain::SetupElementConnectivities(Int_t) converted_functionName = void_Domain--SetupElementConnectivities-Int_t- filePath = ./extra-p_docker/share/input_lulesh_@void_Domain--SetupElementConnectivities-Int_t- extrap --text ./extra-p_docker/share/input_lulesh_@void_Domain--SetupElementConnectivities-Int_t- --modeler multi-parameter --options \#spm=Basic \#spo=poly_exponents=-1,0,1,2,3,log_exponents=0,1,force_combination_exponents=1,allow_negative_exponents=True
Loading file: 100%|██████████| [00:00<00:00, Validating experiment] Generating models: | | [00:00<?]/usr/local/lib/python3.10/site-packages/extrap/modelers/single_parameter/basic.py:273: UserWarning: Number of measurements for a parameter needs to be at least 5 in order to create a performance model. warnings.warn( Generating models: 100%|██████████| [00:00<00:00]
extrap --text ./extra-p_docker/share/input_lulesh_@void_Domain--SetupElementConnectivities-Int_t- --modeler default --options \#spm=Basic \#spo=poly_exponents=-1,0,1,2,3,log_exponents=0,1,force_combination_exponents=1,allow_negative_exponents=True
Loading file: 100%|██████████| [00:00<00:00, Validating experiment]
Generating models: | | [00:00<?]/usr/local/lib/python3.10/site-packages/extrap/modelers/single_parameter/basic.py:273: UserWarning: Number of measurements for a parameter needs to be at least 5 in order to create a performance model.
warnings.warn(
Generating models: 100%|██████████| [00:00<00:00]
/usr/local/lib/python3.10/site-packages/scipy/optimize/_minpack_py.py:881: OptimizeWarning: Covariance of the parameters could not be estimated
warnings.warn('Covariance of the parameters could not be estimated',
/usr/local/lib/python3.10/site-packages/scipy/optimize/_minpack_py.py:881: OptimizeWarning: Covariance of the parameters could not be estimated
warnings.warn('Covariance of the parameters could not be estimated',
/usr/local/lib/python3.10/site-packages/scipy/optimize/_minpack_py.py:881: OptimizeWarning: Covariance of the parameters could not be estimated
warnings.warn('Covariance of the parameters could not be estimated',
functionName = void_Domain::SetupSymmetryPlanes(Int_t) converted_functionName = void_Domain--SetupSymmetryPlanes-Int_t- filePath = ./extra-p_docker/share/input_lulesh_@void_Domain--SetupSymmetryPlanes-Int_t- extrap --text ./extra-p_docker/share/input_lulesh_@void_Domain--SetupSymmetryPlanes-Int_t- --modeler multi-parameter --options \#spm=Basic \#spo=poly_exponents=-1,0,1,2,3,log_exponents=0,1,force_combination_exponents=1,allow_negative_exponents=True
Loading file: 100%|██████████| [00:00<00:00, Validating experiment] Generating models: | | [00:00<?]/usr/local/lib/python3.10/site-packages/extrap/modelers/single_parameter/basic.py:273: UserWarning: Number of measurements for a parameter needs to be at least 5 in order to create a performance model. warnings.warn( Generating models: 100%|██████████| [00:00<00:00]
extrap --text ./extra-p_docker/share/input_lulesh_@void_Domain--SetupSymmetryPlanes-Int_t- --modeler default --options \#spm=Basic \#spo=poly_exponents=-1,0,1,2,3,log_exponents=0,1,force_combination_exponents=1,allow_negative_exponents=True
Loading file: 100%|██████████| [00:00<00:00, Validating experiment]
Generating models: | | [00:00<?]/usr/local/lib/python3.10/site-packages/extrap/modelers/single_parameter/basic.py:273: UserWarning: Number of measurements for a parameter needs to be at least 5 in order to create a performance model.
warnings.warn(
Generating models: 100%|██████████| [00:00<00:00]
/usr/local/lib/python3.10/site-packages/scipy/optimize/_minpack_py.py:881: OptimizeWarning: Covariance of the parameters could not be estimated
warnings.warn('Covariance of the parameters could not be estimated',
/usr/local/lib/python3.10/site-packages/scipy/optimize/_minpack_py.py:881: OptimizeWarning: Covariance of the parameters could not be estimated
warnings.warn('Covariance of the parameters could not be estimated',
/usr/local/lib/python3.10/site-packages/scipy/optimize/_minpack_py.py:881: OptimizeWarning: Covariance of the parameters could not be estimated
warnings.warn('Covariance of the parameters could not be estimated',
functionName = void_Domain::~Domain() converted_functionName = void_Domain--~Domain-- filePath = ./extra-p_docker/share/input_lulesh_@void_Domain--~Domain-- extrap --text ./extra-p_docker/share/input_lulesh_@void_Domain--~Domain-- --modeler multi-parameter --options \#spm=Basic \#spo=poly_exponents=-1,0,1,2,3,log_exponents=0,1,force_combination_exponents=1,allow_negative_exponents=True
Loading file: 100%|██████████| [00:00<00:00, Validating experiment] Generating models: | | [00:00<?]/usr/local/lib/python3.10/site-packages/extrap/modelers/single_parameter/basic.py:273: UserWarning: Number of measurements for a parameter needs to be at least 5 in order to create a performance model. warnings.warn( Generating models: 100%|██████████| [00:00<00:00]
extrap --text ./extra-p_docker/share/input_lulesh_@void_Domain--~Domain-- --modeler default --options \#spm=Basic \#spo=poly_exponents=-1,0,1,2,3,log_exponents=0,1,force_combination_exponents=1,allow_negative_exponents=True
Loading file: 100%|██████████| [00:00<00:00, Validating experiment]
Generating models: | | [00:00<?]/usr/local/lib/python3.10/site-packages/extrap/modelers/single_parameter/basic.py:273: UserWarning: Number of measurements for a parameter needs to be at least 5 in order to create a performance model.
warnings.warn(
Generating models: 100%|██████████| [00:00<00:00]
/usr/local/lib/python3.10/site-packages/scipy/optimize/_minpack_py.py:881: OptimizeWarning: Covariance of the parameters could not be estimated
warnings.warn('Covariance of the parameters could not be estimated',
/usr/local/lib/python3.10/site-packages/scipy/optimize/_minpack_py.py:881: OptimizeWarning: Covariance of the parameters could not be estimated
warnings.warn('Covariance of the parameters could not be estimated',
/usr/local/lib/python3.10/site-packages/scipy/optimize/_minpack_py.py:881: OptimizeWarning: Covariance of the parameters could not be estimated
warnings.warn('Covariance of the parameters could not be estimated',
functionName = void_InitMeshDecomp(Int_t_Int_t_Int_t converted_functionName = void_InitMeshDecomp-Int_t_Int_t_Int_t filePath = ./extra-p_docker/share/input_lulesh_@void_InitMeshDecomp-Int_t_Int_t_Int_t extrap --text ./extra-p_docker/share/input_lulesh_@void_InitMeshDecomp-Int_t_Int_t_Int_t --modeler multi-parameter --options \#spm=Basic \#spo=poly_exponents=-1,0,1,2,3,log_exponents=0,1,force_combination_exponents=1,allow_negative_exponents=True
Loading file: 100%|██████████| [00:00<00:00, Validating experiment] Generating models: | | [00:00<?]/usr/local/lib/python3.10/site-packages/extrap/modelers/single_parameter/basic.py:273: UserWarning: Number of measurements for a parameter needs to be at least 5 in order to create a performance model. warnings.warn( Generating models: 100%|██████████| [00:00<00:00]
extrap --text ./extra-p_docker/share/input_lulesh_@void_InitMeshDecomp-Int_t_Int_t_Int_t --modeler default --options \#spm=Basic \#spo=poly_exponents=-1,0,1,2,3,log_exponents=0,1,force_combination_exponents=1,allow_negative_exponents=True
Loading file: 100%|██████████| [00:00<00:00, Validating experiment]
Generating models: | | [00:00<?]/usr/local/lib/python3.10/site-packages/extrap/modelers/single_parameter/basic.py:273: UserWarning: Number of measurements for a parameter needs to be at least 5 in order to create a performance model.
warnings.warn(
Generating models: 100%|██████████| [00:00<00:00]
/usr/local/lib/python3.10/site-packages/scipy/optimize/_minpack_py.py:881: OptimizeWarning: Covariance of the parameters could not be estimated
warnings.warn('Covariance of the parameters could not be estimated',
/usr/local/lib/python3.10/site-packages/scipy/optimize/_minpack_py.py:881: OptimizeWarning: Covariance of the parameters could not be estimated
warnings.warn('Covariance of the parameters could not be estimated',
/usr/local/lib/python3.10/site-packages/scipy/optimize/_minpack_py.py:881: OptimizeWarning: Covariance of the parameters could not be estimated
warnings.warn('Covariance of the parameters could not be estimated',
functionName = void_ParseCommandLineOptions(int_char_**_Int_t_cmdLineOpts converted_functionName = void_ParseCommandLineOptions-int_char_**_Int_t_cmdLineOpts filePath = ./extra-p_docker/share/input_lulesh_@void_ParseCommandLineOptions-int_char_**_Int_t_cmdLineOpts extrap --text ./extra-p_docker/share/input_lulesh_@void_ParseCommandLineOptions-int_char_**_Int_t_cmdLineOpts --modeler multi-parameter --options \#spm=Basic \#spo=poly_exponents=-1,0,1,2,3,log_exponents=0,1,force_combination_exponents=1,allow_negative_exponents=True
Loading file: 100%|██████████| [00:00<00:00, Validating experiment] Generating models: | | [00:00<?]/usr/local/lib/python3.10/site-packages/extrap/modelers/single_parameter/basic.py:273: UserWarning: Number of measurements for a parameter needs to be at least 5 in order to create a performance model. warnings.warn( Generating models: 100%|██████████| [00:00<00:00]
extrap --text ./extra-p_docker/share/input_lulesh_@void_ParseCommandLineOptions-int_char_**_Int_t_cmdLineOpts --modeler default --options \#spm=Basic \#spo=poly_exponents=-1,0,1,2,3,log_exponents=0,1,force_combination_exponents=1,allow_negative_exponents=True
Loading file: 100%|██████████| [00:00<00:00, Validating experiment]
Generating models: | | [00:00<?]/usr/local/lib/python3.10/site-packages/extrap/modelers/single_parameter/basic.py:273: UserWarning: Number of measurements for a parameter needs to be at least 5 in order to create a performance model.
warnings.warn(
Generating models: 100%|██████████| [00:00<00:00]
/usr/local/lib/python3.10/site-packages/scipy/optimize/_minpack_py.py:881: OptimizeWarning: Covariance of the parameters could not be estimated
warnings.warn('Covariance of the parameters could not be estimated',
/usr/local/lib/python3.10/site-packages/scipy/optimize/_minpack_py.py:881: OptimizeWarning: Covariance of the parameters could not be estimated
warnings.warn('Covariance of the parameters could not be estimated',
/usr/local/lib/python3.10/site-packages/scipy/optimize/_minpack_py.py:881: OptimizeWarning: Covariance of the parameters could not be estimated
warnings.warn('Covariance of the parameters could not be estimated',
functionName = void_VerifyAndWriteFinalOutput(Real_t_Domain converted_functionName = void_VerifyAndWriteFinalOutput-Real_t_Domain filePath = ./extra-p_docker/share/input_lulesh_@void_VerifyAndWriteFinalOutput-Real_t_Domain extrap --text ./extra-p_docker/share/input_lulesh_@void_VerifyAndWriteFinalOutput-Real_t_Domain --modeler multi-parameter --options \#spm=Basic \#spo=poly_exponents=-1,0,1,2,3,log_exponents=0,1,force_combination_exponents=1,allow_negative_exponents=True
Loading file: 100%|██████████| [00:00<00:00, Validating experiment] Generating models: | | [00:00<?]/usr/local/lib/python3.10/site-packages/extrap/modelers/single_parameter/basic.py:273: UserWarning: Number of measurements for a parameter needs to be at least 5 in order to create a performance model. warnings.warn( Generating models: 100%|██████████| [00:00<00:00]
extrap --text ./extra-p_docker/share/input_lulesh_@void_VerifyAndWriteFinalOutput-Real_t_Domain --modeler default --options \#spm=Basic \#spo=poly_exponents=-1,0,1,2,3,log_exponents=0,1,force_combination_exponents=1,allow_negative_exponents=True
Loading file: 100%|██████████| [00:00<00:00, Validating experiment] Generating models: | | [00:00<?]/usr/local/lib/python3.10/site-packages/extrap/modelers/single_parameter/basic.py:273: UserWarning: Number of measurements for a parameter needs to be at least 5 in order to create a performance model. warnings.warn( Generating models: 100%|██████████| [00:00<00:00]
_list_series: list[pd.Series] = []
for functionName in functionNames:
pass
testDF_perFunc: pd.DataFrame = testDF[testDF["Name"] == functionName].reset_index()
tmp_series: pd.Series = pd.Series(dtype="object")
# Extra-P による予測
for modelerName in modelerNames:
tmp_series[modelerName] = (
dict_models_perFunc[functionName][modelerName].subs(target_env).evalf()
)
# 提案手法による予測
_tmp_testDF_perFunc: pd.DataFrame = testDF_perFunc[
(testDF_perFunc["process"] == test_lulesh_processes[-1])
& (testDF_perFunc["iteration"] == test_lulesh_iterations[-1])
& (testDF_perFunc["size"] == test_lulesh_sizes[-1])
& (testDF_perFunc["Name"] == functionName)
]
try:
tmp_series["proposal"] = float(
np.array(
dict_models_perFunc[functionName]["proposal"].predict(
inputDF=_tmp_testDF_perFunc[expVar]
)
)
)
except:
warnings.warn(f"{functionName} has no data at testDF")
continue
# 実測値
tmp_series["real_call"] = _tmp_testDF_perFunc.reset_index(drop=True).loc[0]["#Call"]
tmp_series["functionName"] = functionName
_list_series.append(tmp_series)
DF_about_call_at_lulesh: pd.DataFrame = pd.DataFrame(_list_series)
DF_about_call_at_lulesh = add_relativeErrorRateCol(
inputDF=DF_about_call_at_lulesh,
real_colName="real_call",
predicted_colName="default",
targetColName="real_call vs default",
)
# DF_about_call_at_lulesh = add_relativeErrorRateCol(
# inputDF=DF_about_call_at_lulesh,
# real_colName="real_call",
# predicted_colName="basic",
# targetColName="real_call vs basic",
# )
# DF_about_call_at_lulesh = add_relativeErrorRateCol(
# inputDF=DF_about_call_at_lulesh,
# real_colName="real_call",
# predicted_colName="refining",
# targetColName="real_call vs refining",
# )
DF_about_call_at_lulesh = add_relativeErrorRateCol(
inputDF=DF_about_call_at_lulesh,
real_colName="real_call",
predicted_colName="multi-parameter",
targetColName="real_call vs multi-parameter",
)
DF_about_call_at_lulesh = add_relativeErrorRateCol(
inputDF=DF_about_call_at_lulesh,
real_colName="real_call",
predicted_colName="proposal",
targetColName="real_call vs proposal",
)
print(DF_about_call_at_lulesh.to_csv())
,multi-parameter,default,proposal,real_call,functionName,real_call vs default,real_call vs multi-parameter,real_call vs proposal 0,0.999999999999999,0.999999999999999,1.0,1.0,.TAU_application,1.11022302462516e-13,1.11022302462516e-13,0.0 1,1023.00000000000,1023.00000000000,1023.0,1023.0,MPI_Allreduce(),2.22261657324763e-14,2.22261657324763e-14,0.0 2,0.999999999999999,0.999999999999999,1.0,1.0,MPI_Barrier(),1.11022302462516e-13,1.11022302462516e-13,0.0 3,9221.00000000000,9221.00000000000,9221.000000000004,9221.0,MPI_Comm_rank(),1.97265958523572e-14,1.97265958523572e-14,3.945319170471438e-14 4,0.999999999999999,0.999999999999999,1.0,1.0,MPI_Comm_size(),1.11022302462516e-13,1.11022302462516e-13,0.0 5,0.999999999999999,0.999999999999999,1.0,1.0,MPI_Finalize(),1.11022302462516e-13,1.11022302462516e-13,0.0 6,0.999999999999999,0.999999999999999,1.0,1.0,MPI_Init(),1.11022302462516e-13,1.11022302462516e-13,0.0 7,26764.7475504032,26764.7475504032,51757.94232139088,37732.8,MPI_Irecv(),29.0676876605944,29.0676876605944,37.16963045782682 8,26764.7475504032,26764.7475504032,51757.94232139088,37732.8,MPI_Isend(),29.0676876605944,29.0676876605944,37.16963045782682 9,0.999999999999999,0.999999999999999,1.0,1.0,MPI_Reduce(),1.11022302462516e-13,1.11022302462516e-13,0.0 10,26764.7475504032,26764.7475504032,51757.94232139088,37732.8,MPI_Wait(),29.0676876605944,29.0676876605944,37.16963045782682 11,3073.00000000000,3073.00000000000,3073.0000000000005,3073.0,MPI_Waitall(),4.43944696602471e-14,4.43944696602471e-14,1.479815655341569e-14 12,2149585472.22544,2149585472.22544,2073910598.7216053,2149580000.0,Real_t_CalcElemVolume(const,0.000254571844002869,0.000254571844002869,3.520194702146219 13,2.00000000000000,2.00000000000000,2.0,2.0,StrToInt,1.11022302462516e-13,1.11022302462516e-13,0.0 14,0.999999999999999,0.999999999999999,1.0,1.0,int_main(int_char_**),1.11022302462516e-13,1.11022302462516e-13,0.0 15,1024.00000000000,1024.00000000000,1024.0,1024.0,void_CalcKinematicsForElems(Domain,0,0,0.0 16,1024.00000000000,1024.00000000000,1024.0,1024.0,void_CommMonoQ(Domain,0,0,0.0 17,3073.00000000000,3073.00000000000,3073.0000000000005,3073.0,void_CommRecv(Domain,4.43944696602471e-14,4.43944696602471e-14,1.479815655341569e-14 18,1025.00000000000,1025.00000000000,1025.0,1025.0,void_CommSBN(Domain,2.21827976042178e-14,2.21827976042178e-14,0.0 19,3073.00000000000,3073.00000000000,3073.0000000000005,3073.0,void_CommSend(Domain,4.43944696602471e-14,4.43944696602471e-14,1.479815655341569e-14 20,1024.00000000000,1024.00000000000,1024.0,1024.0,void_CommSyncPosVel(Domain,0,0,0.0 21,0.999999999999999,0.999999999999999,1.0,1.0,void_Domain::BuildMesh(Int_t_Int_t_Int_t),1.11022302462516e-13,1.11022302462516e-13,0.0 22,0.999999999999999,0.999999999999999,1.0,1.0,void_Domain::CreateRegionIndexSets(Int_t_Int_t),1.11022302462516e-13,1.11022302462516e-13,0.0 23,0.999999999999999,0.999999999999999,1.0,1.0,void_Domain::Domain(Int_t_Index_t_Index_t_Index_t_Index_t_Int_t_Int_t_Int_t_Int_t),1.11022302462516e-13,1.11022302462516e-13,0.0 24,0.999999999999999,0.999999999999999,1.0,1.0,void_Domain::SetupBoundaryConditions(Int_t),1.11022302462516e-13,1.11022302462516e-13,0.0 25,0.999999999999999,0.999999999999999,1.0,1.0,void_Domain::SetupCommBuffers(Int_t),1.11022302462516e-13,1.11022302462516e-13,0.0 26,0.999999999999999,0.999999999999999,1.0,1.0,void_Domain::SetupElementConnectivities(Int_t),1.11022302462516e-13,1.11022302462516e-13,0.0 27,0.999999999999999,0.999999999999999,1.0,1.0,void_Domain::SetupSymmetryPlanes(Int_t),1.11022302462516e-13,1.11022302462516e-13,0.0 28,0.999999999999999,0.999999999999999,1.0,1.0,void_Domain::~Domain(),1.11022302462516e-13,1.11022302462516e-13,0.0 29,0.999999999999999,0.999999999999999,1.0,1.0,void_InitMeshDecomp(Int_t_Int_t_Int_t,1.11022302462516e-13,1.11022302462516e-13,0.0 30,0.999999999999999,0.999999999999999,1.0,1.0,void_ParseCommandLineOptions(int_char_**_Int_t_cmdLineOpts,1.11022302462516e-13,1.11022302462516e-13,0.0 31,0.000999993948753132,0.000999993948753132,0.0009999939487532368,0.001,void_VerifyAndWriteFinalOutput(Real_t_Domain,0.000605124686817171,0.000605124686817171,0.0006051246763220941
DF_about_call_at_lulesh.mean()
/tmp/ipykernel_121/1662607098.py:1: FutureWarning: The default value of numeric_only in DataFrame.mean is deprecated. In a future version, it will default to False. In addition, specifying 'numeric_only=None' is deprecated. Select only valid columns or specify the value of numeric_only to silence this warning. DF_about_call_at_lulesh.mean()
multi-parameter 6.717779e+07 default 6.717779e+07 proposal 6.481530e+07 real_call 6.717865e+07 real_call vs default 2.725123e+00 real_call vs multi-parameter 2.725123e+00 real_call vs proposal 3.594678e+00 dtype: float64
expVar: list[str] = ["process", "iteration", "size"]
# resVar: str = "Exclusive"
# trainDF_lulesh: pd.DataFrame = ret_averaged_rawDF_lulesh(
# list_process=train_lulesh_processes,
# list_iteration=train_lulesh_iterations,
# list_size=train_lulesh_sizes,
# list_csvDir=list_csvDir,
# resVar=resVar,
# )
# testDF_lulesh: pd.DataFrame = ret_averaged_rawDF_lulesh(
# list_process=test_lulesh_processes,
# list_iteration=test_lulesh_iterations,
# list_size=test_lulesh_sizes,
# list_csvDir=list_csvDir,
# resVar=resVar,
# )
# testDF_lulesh = testDF_lulesh.reset_index()
# trainDF_lulesh = trainDF_lulesh.reset_index()
# testDF_lulesh["functionName"] = testDF_lulesh["Name"]
# trainDF_lulesh["functionName"] = trainDF_lulesh["Name"]
# functionNames_lulesh: list[str] = sorted(list(set(trainDF["Name"])))
dict_symbols_lulesh = {}
for elem in expVar:
dict_symbols_lulesh[elem] = symbols(elem, real=True)
target_env_lulesh = [
(dict_symbols_lulesh["size"], test_lulesh_sizes[-1]),
(dict_symbols_lulesh["iteration"], test_lulesh_iterations[-1]),
(dict_symbols_lulesh["process"], test_lulesh_processes[-1]),
]
modelerName: str = "multi-parameter"
modelerOption: str = """ --options \#spm=Basic \#spo=poly_exponents=-1,0,1,2,3,log_exponents=0,1,force_combination_exponents=1,allow_negative_exponents=True"""
%reset -f
# jupyter_pwd = %pwd
# if jupyter_pwd == "/":
# %cd /workspace
# ipynb形式のライブラリのインポート
%run ./lib/lib.ipynb
# 生データの入ったCSVファイルの保持されたディレクトリ名を格納している変数
csvDirPath = "./csv_files/"
# NPBのベンチマーク名のリスト
benchmarkNames = ["cg", "ep", "ft", "is", "lu", "mg"]
# LULESH ベンチマークプログラムのプロセス数・問題サイズ・イテレーション数
lulesh_processes: list[int] = [8, 27, 64, 125, 216, 343, 512]
lulesh_iterations: list[int] = [8, 16, 32, 64, 128, 256]
lulesh_sizes: list[int] = [16, 24, 32, 48, 64, 128]
# ipynb形式のライブラリノートを.py形式に変更したものをインポート
import lib
import lib.lab_lib
from lib.lab_lib import *
train_lulesh_processes: list[int] = [8, 27, 64, 125, 216, 343]
train_lulesh_iterations: list[int] = [8, 16, 32, 64, 128]
train_lulesh_sizes: list[int] = [16, 24, 32, 48]
test_lulesh_processes: list[int] = [512, 729, 1000]
test_lulesh_iterations: list[int] = [256, 512, 1024]
test_lulesh_sizes: list[int] = [64, 96, 128]
list_modelName: list[str] = [
"modelIp",
"modelLog",
"modelLinAndIp",
"modelLinAndLog",
"modelIpAndLin",
"modelIpAndLog",
"modelLogAndLin",
"modelLogAndIp",
"modelProcessDividedByProblemSize",
"modelProblemSizeDividedByProcess",
"modelInfiniteProductOfProblemSizeMultipliedByProcesses",
"modelInfiniteProductOfProblemSizeDividedByProcesses",
"modelLinearSumOf2elementCombination",
"modelLinearSumOfElementCombinations",
"modelLinearSumOf2elementCombinationWithSquared",
"modelLinearSumOf2elementCombinationWithCubed",
"modelSquareRootOfProcess",
"modelSquareRootTimesOtherElems",
"modelObeyOneParameter",
"modelLin"
# "modelBasicTree",
]
# ipynb形式のライブラリのインポート
%run ./lib/lib.ipynb
# ipynb形式のライブラリノートを.py形式に変更したものをインポート
import lib
import lib.lab_lib
from lib.lab_lib import *
# 生データの入ったCSVファイルの保持されたディレクトリ名を格納している変数
csvDirPath = "./csv_files/"
# NPBのベンチマーク名のリスト
benchmarkNames = ["cg", "ep", "ft", "is", "lu", "mg"]
# NPBのプロセス数
npb_process: list[int] = [2, 4, 8, 16, 32, 64, 128, 256]
train_npb_process: list[int] = npb_process[:-1]
test_npb_process: list[int] = npb_process[-1:]
# NPBのCGの初期変数
cg_na: list[int] = [14000, 30000, 75000, 100000, 1500000]
cg_nonzer: list[int] = [11, 12, 13, 14, 15, 18, 21]
cg_niter: list[int] = [15, 30, 75, 90, 100]
cg_shift: list[int] = [20, 40, 60, 80, 110, 200]
train_cg_na: list[int] = cg_na[:-1]
train_cg_nonzer: list[int] = cg_nonzer[:-1]
train_cg_niter: list[int] = cg_niter[:-1]
train_cg_shift: list[int] = cg_shift[:-1]
test_cg_na: list[int] = cg_na[-1:]
test_cg_nonzer: list[int] = cg_nonzer[-1:]
test_cg_niter: list[int] = cg_niter[-1:]
test_cg_shift: list[int] = cg_shift[-1:]
# LULESH ベンチマークプログラムのプロセス数・問題サイズ・イテレーション数
lulesh_processes: list[int] = [8, 27, 64, 125, 216, 343, 512]
lulesh_iterations: list[int] = [8, 16, 32, 64, 128, 256]
lulesh_sizes: list[int] = [16, 24, 32, 48, 64, 128]
train_lulesh_processes: list[int] = [8, 27, 64, 125, 216, 343]
train_lulesh_iterations: list[int] = [8, 16, 32, 64, 128]
train_lulesh_sizes: list[int] = [16, 24, 32, 48]
test_lulesh_processes: list[int] = [512, 729, 1000]
test_lulesh_iterations: list[int] = [256, 512, 1024]
test_lulesh_sizes: list[int] = [64, 96, 128]
# Extra-Pのオプション
modelerNames: list[str] = [
# "refining",
"multi-parameter",
"default",
# "basic --options poly_exponents=-1,0,1,2,3 log_exponents=0,1 force_combination_exponents=1 allow_negative_exponents=1"
]
modelerOption: str = """ --options \#spm=Basic \#spo=poly_exponents=-1,0,1,2,3,log_exponents=0,1,force_combination_exponents=1,allow_negative_exponents=True"""
list_modelName: list[str] = [
"modelIp",
"modelLog",
"modelLinAndIp",
"modelLinAndLog",
"modelIpAndLin",
"modelIpAndLog",
"modelLogAndLin",
"modelLogAndIp",
"modelProcessDividedByProblemSize",
"modelProblemSizeDividedByProcess",
"modelInfiniteProductOfProblemSizeMultipliedByProcesses",
"modelInfiniteProductOfProblemSizeDividedByProcesses",
"modelLinearSumOf2elementCombination",
"modelLinearSumOfElementCombinations",
"modelLinearSumOf2elementCombinationWithSquared",
"modelLinearSumOf2elementCombinationWithCubed",
"modelSquareRootOfProcess",
"modelSquareRootTimesOtherElems",
"modelObeyOneParameter",
"modelLin"
# "modelBasicTree",
]
list_csvDir = [
"./csv_files/lulesh_1st/",
"./csv_files/lulesh_2nd/",
"./csv_files/lulesh_3rd/",
]
DEBUG:__main__:hello DEBUG:__main__:hello
# コストのグラフの作成
_list_series: list[pd.Series] = []
pis: list[str]
for elem_process in train_lulesh_processes + test_lulesh_processes:
fileDir: str = "./txt_files/ElapFiles/"
fileName: str = f"p{elem_process}_Elap"
with open(fileDir + fileName) as f:
l: list[str] = [s.strip() for s in f.readlines()]
if len(l) % 2 != 0:
warnings.warn("ファイルの行数が偶数ではありません")
for i in range(len(l)):
if i % 2 == 0:
pis = l[i].split(sep="/")[-3:]
else:
time = l[i].split(sep=" ")[-2]
_series: pd.Series = pd.Series(
{
"p": int(pis[0].replace("p", "")),
"i": int(pis[1].replace("i", "")),
"s": int(pis[2].replace("s", "")),
"time": float(time),
}
)
_series["cost"] = _series["p"] * _series["time"]
_list_series.append(_series)
# print(f"pis={pis}, time={time}")
DF_pis_time: pd.DataFrame = pd.DataFrame(data=_list_series)
target_p_border: int = test_lulesh_processes[0]
target_i_border: int = test_lulesh_iterations[0]
target_s_border: int = test_lulesh_sizes[0]
DF_pis_time_at_train: pd.DataFrame = DF_pis_time[
(DF_pis_time["p"] < target_p_border)
& (DF_pis_time["i"] < target_i_border)
& (DF_pis_time["s"] < target_s_border)
]
DF_pis_time_at_target: pd.DataFrame = DF_pis_time[
(DF_pis_time["p"] >= target_p_border)
& (DF_pis_time["i"] >= target_i_border)
& (DF_pis_time["s"] >= target_s_border)
]
cost_to_build_model: float = sum(DF_pis_time_at_train["cost"])
DF_pis_time_at_target = DF_pis_time_at_target.sort_values(by=["p", "i", "s"])
DF_pis_time_at_train = DF_pis_time_at_train.sort_values(by=["p", "i", "s"])
condition_col: list[str] = ["p", "i", "s"]
averaged_DF_pis_time_at_target = DF_pis_time_at_target.groupby(condition_col).aggregate(
np.mean
)
trace_data = []
layout = go.Layout(barmode="stack")
for i, sr in DF_pis_time_at_target.reset_index().iterrows():
x = [j for j in range(1, len(DF_pis_time_at_target) + 1)]
y = [0] * len(DF_pis_time_at_target)
for k in range(int(i), len(DF_pis_time_at_target)):
y[k] = sr["cost"]
trace = go.Bar(x=x, y=y, name=f"p{int(sr['p'])}i{int(sr['i'])}s{int(sr['s'])}")
trace_data.append(trace)
fig = go.Figure(data=trace_data, layout=layout)
fig.add_shape(
type="line",
x0=0,
x1=len(DF_pis_time_at_target),
y0=cost_to_build_model,
y1=cost_to_build_model,
line=dict(
color="Red",
),
xref="x",
yref="y",
name="モデル構築に要するコスト",
)
fig.update_layout(xaxis=dict(title="予測対象の個数"), yaxis=dict(title="コスト"))
fig.show()
averaged_DF_pis_time_at_target = averaged_DF_pis_time_at_target.reset_index()
graph_x: list[int] = list(range(1, len(averaged_DF_pis_time_at_target) + 1))
graph_y: list[float] = [0] * len(averaged_DF_pis_time_at_target)
for i, sr in averaged_DF_pis_time_at_target.iterrows():
for k in range(i, len(averaged_DF_pis_time_at_target)):
graph_y[k] += sr["cost"]
graph_x_to_build: list[float] = list(range(len(averaged_DF_pis_time_at_target)))
graph_x_to_build[-1] = 27
graph_y_to_build: list[float] = [cost_to_build_model] * len(
averaged_DF_pis_time_at_target
)
symbols1: list[str] = ["実測"] * len(averaged_DF_pis_time_at_target)
symbols2: list[str] = ["予測"] * len(averaged_DF_pis_time_at_target)
_symbols: list[str] = symbols1 + symbols2
dataDF: pd.DataFrame = pd.DataFrame(
data={
"取得対象の実行規模の数": graph_x + graph_x_to_build,
"コスト": graph_y + graph_y_to_build,
"凡例": _symbols,
}
)
fig = px.line(dataDF, x="取得対象の実行規模の数", y="コスト", color="凡例", log_y=True)
fig.update_layout(
legend=dict(
x=0.01, # ①:X座標
y=0.99, # ①:Y座標
xanchor="left", # ②:X座標が凡例のどの部分を表すか
yanchor="top", # ②:Y座標が凡例のどの部分を表すか
orientation="h", # ③:凡例を横並びにする
)
)
fig.show()
# data = go.Scatter(x=graph_x, y=graph_y, name = "予測対象のコスト", symbol="")
# fig = go.Figure(data=data)
# fig.add_shape(
# type="line",
# x0=0,
# x1=len(averaged_DF_pis_time_at_target),
# y0=cost_to_build_model,
# y1=cost_to_build_model,
# line=dict(
# color="Red",
# ),
# xref="x",
# yref="y",
# name="モデル構築に必要なコスト",
# )
# fig.update_layout(
# xaxis=dict(title="取得対象の実行規模の数"),
# yaxis=dict(title="コスト", type="log"),
# width=1000,
# height=500,
# )
# fig.show()
print(dataDF.T.to_csv())
,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53 取得対象の実行規模の数,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,27 コスト,66560.0,307200.0,870400.0,1005226.6666666666,1493333.3333333333,2670933.333333333,2945706.6666666665,3918506.6666666665,6256640.0,6361130.0,6706190.0,7508090.0,7707350.0,8407190.0,10083890.0,10477550.0,11862650.0,15216050.0,15352716.666666666,15839383.333333332,17006050.0,17282716.666666668,18269383.333333336,20569383.333333336,21129383.333333336,23062716.666666668,27729383.333333336,180397.09999999995,180397.09999999995,180397.09999999995,180397.09999999995,180397.09999999995,180397.09999999995,180397.09999999995,180397.09999999995,180397.09999999995,180397.09999999995,180397.09999999995,180397.09999999995,180397.09999999995,180397.09999999995,180397.09999999995,180397.09999999995,180397.09999999995,180397.09999999995,180397.09999999995,180397.09999999995,180397.09999999995,180397.09999999995,180397.09999999995,180397.09999999995,180397.09999999995,180397.09999999995,180397.09999999995 凡例,実測,実測,実測,実測,実測,実測,実測,実測,実測,実測,実測,実測,実測,実測,実測,実測,実測,実測,実測,実測,実測,実測,実測,実測,実測,実測,実測,予測,予測,予測,予測,予測,予測,予測,予測,予測,予測,予測,予測,予測,予測,予測,予測,予測,予測,予測,予測,予測,予測,予測,予測,予測,予測,予測
print(graph_y[-1])
print(cost_to_build_model)
print(100 * cost_to_build_model / graph_y[-1])
dataDF
27729383.333333336 180397.09999999995 0.6505629708077411
| 取得対象の実行規模の数 | コスト | 凡例 | |
|---|---|---|---|
| 0 | 1 | 6.656000e+04 | 実測 |
| 1 | 2 | 3.072000e+05 | 実測 |
| 2 | 3 | 8.704000e+05 | 実測 |
| 3 | 4 | 1.005227e+06 | 実測 |
| 4 | 5 | 1.493333e+06 | 実測 |
| 5 | 6 | 2.670933e+06 | 実測 |
| 6 | 7 | 2.945707e+06 | 実測 |
| 7 | 8 | 3.918507e+06 | 実測 |
| 8 | 9 | 6.256640e+06 | 実測 |
| 9 | 10 | 6.361130e+06 | 実測 |
| 10 | 11 | 6.706190e+06 | 実測 |
| 11 | 12 | 7.508090e+06 | 実測 |
| 12 | 13 | 7.707350e+06 | 実測 |
| 13 | 14 | 8.407190e+06 | 実測 |
| 14 | 15 | 1.008389e+07 | 実測 |
| 15 | 16 | 1.047755e+07 | 実測 |
| 16 | 17 | 1.186265e+07 | 実測 |
| 17 | 18 | 1.521605e+07 | 実測 |
| 18 | 19 | 1.535272e+07 | 実測 |
| 19 | 20 | 1.583938e+07 | 実測 |
| 20 | 21 | 1.700605e+07 | 実測 |
| 21 | 22 | 1.728272e+07 | 実測 |
| 22 | 23 | 1.826938e+07 | 実測 |
| 23 | 24 | 2.056938e+07 | 実測 |
| 24 | 25 | 2.112938e+07 | 実測 |
| 25 | 26 | 2.306272e+07 | 実測 |
| 26 | 27 | 2.772938e+07 | 実測 |
| 27 | 0 | 1.803971e+05 | 予測 |
| 28 | 1 | 1.803971e+05 | 予測 |
| 29 | 2 | 1.803971e+05 | 予測 |
| 30 | 3 | 1.803971e+05 | 予測 |
| 31 | 4 | 1.803971e+05 | 予測 |
| 32 | 5 | 1.803971e+05 | 予測 |
| 33 | 6 | 1.803971e+05 | 予測 |
| 34 | 7 | 1.803971e+05 | 予測 |
| 35 | 8 | 1.803971e+05 | 予測 |
| 36 | 9 | 1.803971e+05 | 予測 |
| 37 | 10 | 1.803971e+05 | 予測 |
| 38 | 11 | 1.803971e+05 | 予測 |
| 39 | 12 | 1.803971e+05 | 予測 |
| 40 | 13 | 1.803971e+05 | 予測 |
| 41 | 14 | 1.803971e+05 | 予測 |
| 42 | 15 | 1.803971e+05 | 予測 |
| 43 | 16 | 1.803971e+05 | 予測 |
| 44 | 17 | 1.803971e+05 | 予測 |
| 45 | 18 | 1.803971e+05 | 予測 |
| 46 | 19 | 1.803971e+05 | 予測 |
| 47 | 20 | 1.803971e+05 | 予測 |
| 48 | 21 | 1.803971e+05 | 予測 |
| 49 | 22 | 1.803971e+05 | 予測 |
| 50 | 23 | 1.803971e+05 | 予測 |
| 51 | 24 | 1.803971e+05 | 予測 |
| 52 | 25 | 1.803971e+05 | 予測 |
| 53 | 27 | 1.803971e+05 | 予測 |
Exclusive の予測Inclusive の予測#Call の予測#Subrs の予測# 関数コール回数予測のためのモデル
resVar = "#Call"
expVar: list[str] = ["process", "iteration", "size"]
dict_symbols_lulesh = {}
for elem in expVar:
dict_symbols_lulesh[elem] = symbols(elem, real=True)
target_env_lulesh = [
(dict_symbols_lulesh["size"], test_lulesh_sizes[-1]),
(dict_symbols_lulesh["iteration"], test_lulesh_iterations[-1]),
(dict_symbols_lulesh["process"], test_lulesh_processes[-1]),
]
modelerName: str = "multi-parameter"
modelerOption: str = """ --options \#spm=Basic \#spo=poly_exponents=-1,0,1,2,3,log_exponents=0,1,force_combination_exponents=1,allow_negative_exponents=True"""
print(f"resVar = {resVar}")
trainDF_lulesh: pd.DataFrame = ret_averaged_rawDF_lulesh(
list_process=train_lulesh_processes,
list_iteration=train_lulesh_iterations,
list_size=train_lulesh_sizes,
list_csvDir=list_csvDir,
resVar=resVar,
)
functionNames_lulesh: list[str] = sorted(list(set(trainDF_lulesh["Name"])))
dict_functionName_model_call: dict[str, str] = {}
for functionName in functionNames_lulesh:
trainDF_perFunc: pd.DataFrame = trainDF_lulesh[
trainDF_lulesh["Name"] == functionName
].reset_index()
model_fromExtraP_all = get_ExtraP_model(
inputDF_perFunc=trainDF_perFunc,
expVar=expVar,
resVar=resVar,
functionName=functionName,
benchmarkName="lulesh",
modelerName=modelerName,
modelerOption=modelerOption,
dict_symbols=dict_symbols_lulesh,
)
dict_functionName_model_call[functionName] = model_fromExtraP_all
resVar = #Call
list_resVar: list[str] = ["Exclusive", "Inclusive", "#Subrs"]
dict_resVar_functionName_models_all: dict = {}
dict_resVar_functionName_models_perCall: dict = {}
for resVar in list_resVar:
pass
print(f"resVar = {resVar}")
trainDF_lulesh: pd.DataFrame = ret_averaged_rawDF_lulesh(
list_process=train_lulesh_processes,
list_iteration=train_lulesh_iterations,
list_size=train_lulesh_sizes,
list_csvDir=list_csvDir,
resVar=resVar,
)
print(f"{trainDF_lulesh.head()}")
functionNames_lulesh: list[str] = sorted(list(set(trainDF_lulesh["Name"])))
dict_functionName_model_all: dict[str, str] = {}
dict_functionName_model_perCall: dict[str, str] = {}
for functionName in functionNames_lulesh:
trainDF_perFunc: pd.DataFrame = trainDF_lulesh[
trainDF_lulesh["Name"] == functionName
].reset_index()
model_fromExtraP_all = get_ExtraP_model(
inputDF_perFunc=trainDF_perFunc,
expVar=expVar,
resVar=resVar,
functionName=functionName,
benchmarkName="lulesh",
modelerName=modelerName,
modelerOption=modelerOption,
dict_symbols=dict_symbols_lulesh,
)
dict_functionName_model_all[functionName] = model_fromExtraP_all
model_fromExtraP_perCall = get_ExtraP_model(
inputDF_perFunc=trainDF_perFunc,
expVar=expVar,
resVar=f"{resVar}PerCall",
functionName=functionName,
benchmarkName="lulesh",
modelerName=modelerName,
modelerOption=modelerOption,
dict_symbols=dict_symbols_lulesh,
)
dict_functionName_model_perCall[functionName] = model_fromExtraP_perCall
dict_resVar_functionName_models_all[resVar] = dict_functionName_model_all
dict_resVar_functionName_models_perCall[resVar] = dict_functionName_model_perCall
resVar = Exclusive
%Time Exclusive Inclusive #Call #Subrs \
0 100.0 0.000003 4,647 1.0 1.000
1 100.0 0.025000 4,647 1.0 100.125
2 84.0 6.192000 3,901 1.0 0.000
3 15.1 0.727667 699 1.0 0.000
4 0.2 0.006000 11 8.0 32768.000
Name process iteration size \
0 .TAU_application 8 8 16
1 int_main(int_char_**) 8 8 16
2 MPI_Finalize() 8 8 16
3 MPI_Init() 8 8 16
4 void_CalcKinematicsForElems(Domain 8 8 16
ExclusivePerCall
0 0.000003
1 0.025000
2 3.901000
3 0.699000
4 0.000750
resVar = Inclusive
%Time Exclusive Inclusive #Call #Subrs \
0 100.0 0.0035 6.966333 1.0 1.000
1 100.0 25 6.966333 1.0 100.125
2 84.0 3,901 6.192000 1.0 0.000
3 15.1 699 0.727667 1.0 0.000
4 0.2 6 0.011000 8.0 32768.000
Name process iteration size \
0 .TAU_application 8 8 16
1 int_main(int_char_**) 8 8 16
2 MPI_Finalize() 8 8 16
3 MPI_Init() 8 8 16
4 void_CalcKinematicsForElems(Domain 8 8 16
InclusivePerCall
0 4.647000
1 4.647000
2 3.901000
3 0.699000
4 0.001375
resVar = #Subrs
%Time Exclusive Inclusive #Call #Subrs \
0 100.0 0.0035 4,647 1.0 1.000
1 100.0 25 4,647 1.0 100.125
2 84.0 3,901 3,901 1.0 0.000
3 15.1 699 699 1.0 0.000
4 0.2 6 11 8.0 32768.000
Name process iteration size #SubrsPerCall
0 .TAU_application 8 8 16 1.000
1 int_main(int_char_**) 8 8 16 100.125
2 MPI_Finalize() 8 8 16 0.000
3 MPI_Init() 8 8 16 0.000
4 void_CalcKinematicsForElems(Domain 8 8 16 4096.000
dict_resultDF: dict[str, pd.DataFrame] = {}
for resVar in list_resVar:
testDF_lulesh = ret_averaged_rawDF_lulesh(
list_process=test_lulesh_processes,
list_iteration=test_lulesh_iterations,
list_size=test_lulesh_sizes,
list_csvDir=list_csvDir,
resVar=resVar,
)
print(f"{testDF_lulesh.head()}")
functionNames_lulesh: list[str] = sorted(list(set(testDF_lulesh["Name"])))
_list_series: list[pd.Series] = []
for functionName in functionNames_lulesh:
tmp_series: pd.Series = pd.Series(dtype="object")
testDF_perFunc: pd.DataFrame = testDF_lulesh[
(testDF_lulesh["Name"] == functionName)
& (testDF_lulesh["process"] == test_lulesh_processes[-1])
& (testDF_lulesh["iteration"] == test_lulesh_iterations[-1])
& (testDF_lulesh["size"] == test_lulesh_sizes[-1])
].reset_index()
if len(testDF_perFunc) == 1:
tmp_series[f"real_{resVar}"] = testDF_perFunc.loc[0][resVar]
tmp_series["functionName"] = functionName
tmp_series[f"predicted_{resVar}"] = (
dict_resVar_functionName_models_all[resVar][functionName]
.subs(target_env_lulesh)
.evalf()
)
# コール回数予測
_predicted_call: float
try:
_predicted_call = (
dict_functionName_model_call[functionName]
.subs(target_env_lulesh)
.evalf()
)
except:
_predicted_call = dict_functionName_model_call[functionName]
# 予測対象値の1コール当たりの値
_target_num_perCall: float = (
dict_resVar_functionName_models_perCall[resVar][functionName]
.subs(target_env_lulesh)
.evalf()
)
# 予測されたコール回数 * 予測対象値の1コールあたりの値
_predicted_num: float = _predicted_call * _target_num_perCall
tmp_series[f"predicted_{resVar}_from_call"] = _predicted_num
tmp_series["predicted_call"] = _predicted_call
tmp_series["real_call"] = testDF_perFunc.loc[0][resVar]
_list_series.append(tmp_series)
print(resVar)
_DF_tmp: pd.DataFrame = pd.DataFrame(data=_list_series)
_DF_tmp = add_relativeErrorRateCol(
inputDF=_DF_tmp,
real_colName=f"real_{resVar}",
predicted_colName=f"predicted_{resVar}",
targetColName=f"real vs predicted all @{resVar}",
)
_DF_tmp = add_relativeErrorRateCol(
inputDF=_DF_tmp,
real_colName=f"real_{resVar}",
predicted_colName=f"predicted_{resVar}_from_call",
targetColName=f"real vs predicted using call @{resVar}",
)
dict_resultDF[resVar] = _DF_tmp
%Time Exclusive Inclusive #Call #Subrs \
0 100.0 0.000004 2:13.310 1.0 1.0
1 100.0 73.073333 2:13.310 1.0 2828.0
2 17.9 14.006667 23,890 256.0 67108900.0
3 14.6 18.807333 19,437 255.0 0.0
4 7.7 3.580667 10,238 769.0 10503.8
Name process iteration size \
0 .TAU_application 512 256 64
1 int_main(int_char_**) 512 256 64
2 void_CalcKinematicsForElems(Domain 512 256 64
3 MPI_Allreduce() 512 256 64
4 void_CommSend(Domain 512 256 64
ExclusivePerCall
0 0.000004
1 72.675000
2 0.054781
3 0.076224
4 0.000563
Exclusive
%Time Exclusive Inclusive #Call #Subrs \
0 100.0 0.00374 132.158333 1.0 1.0
1 100.0 1:12.675 132.158333 1.0 2828.0
2 17.9 14,024 23.865667 256.0 67108900.0
3 14.6 19,437 18.807333 255.0 0.0
4 7.7 433 10.272000 769.0 10503.8
Name process iteration size \
0 .TAU_application 512 256 64
1 int_main(int_char_**) 512 256 64
2 void_CalcKinematicsForElems(Domain 512 256 64
3 MPI_Allreduce() 512 256 64
4 void_CommSend(Domain 512 256 64
InclusivePerCall
0 133.310000
1 133.310000
2 0.093320
3 0.076224
4 0.013313
Inclusive
%Time Exclusive Inclusive #Call #Subrs \
0 100.0 0.00374 2:13.310 1.0 1.000000e+00
1 100.0 1:12.675 2:13.310 1.0 2.828000e+03
2 17.9 14,024 23,890 256.0 6.710890e+07
3 14.6 19,437 19,437 255.0 0.000000e+00
4 7.7 433 10,238 769.0 7.002533e+03
Name process iteration size #SubrsPerCall
0 .TAU_application 512 256 64 1.000000
1 int_main(int_char_**) 512 256 64 2828.000000
2 void_CalcKinematicsForElems(Domain 512 256 64 262144.140625
3 MPI_Allreduce() 512 256 64 0.000000
4 void_CommSend(Domain 512 256 64 13.659038
#Subrs
list_resVar: list[str] = ["Exclusive", "Inclusive", "#Subrs"]
print(dict_resultDF.keys())
print(dict_resultDF[list_resVar[0]].mean())
dict_resultDF[list_resVar[0]]
dict_keys(['Exclusive', 'Inclusive', '#Subrs']) real_Exclusive 1.453734e+02 predicted_Exclusive 1.682026e+02 predicted_Exclusive_from_call 1.005981e+04 predicted_call 6.352180e+07 real_call 1.453734e+02 real vs predicted all @Exclusive 9.842000e+01 real vs predicted using call @Exclusive 6.690583e+05 dtype: float64
/tmp/ipykernel_121/3090816874.py:5: FutureWarning: The default value of numeric_only in DataFrame.mean is deprecated. In a future version, it will default to False. In addition, specifying 'numeric_only=None' is deprecated. Select only valid columns or specify the value of numeric_only to silence this warning.
| real_Exclusive | functionName | predicted_Exclusive | predicted_Exclusive_from_call | predicted_call | real_call | real vs predicted all @Exclusive | real vs predicted using call @Exclusive | |
|---|---|---|---|---|---|---|---|---|
| 0 | 3.366667e-06 | .TAU_application | 3.58708333333333e-6 | 2.10570898355123e-6 | 0.999999999999999 | 3.366667e-06 | 6.54702970297031 | 37.4541886073892 |
| 1 | 5.133010e+02 | MPI_Allreduce() | 437.915990349888 | 12124.7559208733 | 69114.4138888889 | 5.133010e+02 | 14.6863165374920 | 2262.11422165031 |
| 2 | 3.833333e-02 | MPI_Barrier() | 0.000816330555555555 | 18.5004563418933 | 662.485549774719 | 3.833333e-02 | 97.8704420289855 | 48162.0600223303 |
| 3 | 9.000000e-03 | MPI_Comm_rank() | 0.0165749444775296 | 0.00575717034518276 | 7682.31799535170 | 9.000000e-03 | 84.1660497503293 | 36.0314406090804 |
| 4 | 4.553333e-07 | MPI_Comm_size() | 4.85952941689757e-7 | 4.90953764193764e-7 | 0.988953189305555 | 4.553333e-07 | 6.72465776495400 | 7.82293503523359 |
| 5 | 7.433333e-01 | MPI_Finalize() | 0.488460112539233 | 130774.528268482 | 32774.5344861112 | 7.433333e-01 | 34.2878772368745 | 17592885.8657150 |
| 6 | 6.153333e-01 | MPI_Init() | 0.493019444444445 | 15072.7188036146 | 30426.8863055556 | 6.153333e-01 | 19.8776634163958 | 2449420.93233174 |
| 7 | 5.633333e-02 | MPI_Irecv() | 0.0607189920652085 | -0.0896068042327797 | -37413.2240107461 | 5.633333e-02 | 7.78519301516302 | 259.065332957597 |
| 8 | 8.950000e-01 | MPI_Isend() | 3.17498669266321 | 1.11110221315045 | 26027.4814559232 | 8.950000e-01 | 254.747116498683 | 24.1454986760275 |
| 9 | 7.166667e-02 | MPI_Reduce() | 0.0581820601722947 | 786.657959823452 | 16456.6172194788 | 7.166667e-02 | 18.8157299921470 | 1097562.26952110 |
| 10 | 4.289367e+01 | MPI_Wait() | 71.5007503928785 | 11.6430685704400 | 5079.97374444445 | 4.289367e+01 | 66.6930247500683 | 72.8559727455335 |
| 11 | 1.180570e+02 | MPI_Waitall() | 1919.56884083925 | 159223.010844645 | 1975772.85318665 | 1.180570e+02 | 1525.96782981038 | 134769.606075578 |
| 12 | 3.164563e+02 | Real_t_CalcElemVolume(const | 335.378503734694 | 293.728744937127 | 2030468957.63812 | 3.164563e+02 | 5.97939380831707 | 7.18190347363545 |
| 13 | 2.020000e-06 | StrToInt | 1.91816666666667e-6 | 2.17858055555555e-6 | 2.29777777777778 | 2.020000e-06 | 5.04125412541255 | 7.85052255225513 |
| 14 | 3.181085e+03 | int_main(int_char_**) | 2135.89439042910 | 2103.48508973343 | 0.999999999999999 | 3.181085e+03 | 32.8564187870145 | 33.8752315724532 |
| 15 | 4.528560e+02 | void_CalcKinematicsForElems(Domain | 445.419547861958 | 668.181607918078 | 1526.19624444444 | 4.528560e+02 | 1.64212291281154 | 47.5483614919706 |
| 16 | 1.440000e+00 | void_CommMonoQ(Domain | 5.25854310710730 | 25.1601639450549 | 8809.01525702766 | 1.440000e+00 | 265.176604660229 | 1647.23360729548 |
| 17 | 4.700000e-02 | void_CommRecv(Domain | 0.00195521666666667 | -0.367699587925509 | 3509.64698308692 | 4.700000e-02 | 95.8399645390071 | 882.339548777678 |
| 18 | 2.805667e+00 | void_CommSBN(Domain | 1.57211617935831 | 1.70392941987339 | 366.193383333333 | 2.805667e+00 | 43.9663949379240 | 39.2682872802640 |
| 19 | 8.500000e+00 | void_CommSend(Domain | 3.13405379446953 | 432.176530498747 | 81149.4056222222 | 8.500000e+00 | 63.1287788885937 | 4984.42977057350 |
| 20 | 1.143733e+01 | void_CommSyncPosVel(Domain | 21.7678534923438 | 90.8365082238611 | 6030.22978611111 | 1.143733e+01 | 90.3228039083456 | 694.210552202096 |
| 21 | 5.866667e-02 | void_Domain::BuildMesh(Int_t_Int_t_Int_t) | 0.0101294785767843 | 0.385413936939769 | 43.8605583333333 | 5.866667e-02 | 82.7338433350268 | 556.955574329152 |
| 22 | 2.166667e-02 | void_Domain::CreateRegionIndexSets(Int_t_Int_t) | 0.00722072107514937 | 0.0574410726950169 | 7.60888888888891 | 2.166667e-02 | 66.6735950377721 | 165.112643207770 |
| 23 | 5.293333e-01 | void_Domain::Domain(Int_t_Index_t_Index_t_Inde... | 0.731860884361024 | 283.485769620082 | 293.553219444444 | 5.293333e-01 | 38.2608723603950 | 53455.2461498896 |
| 24 | 7.000000e-03 | void_Domain::SetupBoundaryConditions(Int_t) | 0.00485935192872183 | 0.0233812701063779 | 5.05637777777779 | 7.000000e-03 | 30.5806867325452 | 234.018144376826 |
| 25 | 4.000000e-03 | void_Domain::SetupCommBuffers(Int_t) | 0.00486234543933642 | 0.0972049848525025 | 19.5226333333333 | 4.000000e-03 | 21.5586359834105 | 2330.12462131256 |
| 26 | 1.866667e-02 | void_Domain::SetupElementConnectivities(Int_t) | 0.0171993242439927 | 2.23505193201573 | 130.968395555556 | 1.866667e-02 | 7.86076297861032 | 11873.4924929414 |
| 27 | 2.836667e-05 | void_Domain::SetupSymmetryPlanes(Int_t) | 3.86090468625521e-5 | 3.88943505553212e-5 | 1.01111111111111 | 2.836667e-05 | 36.1070982228629 | 37.1128691726950 |
| 28 | 1.000000e-03 | void_Domain::~Domain() | 0.000432445444444444 | 0.000790691726770833 | 1.85837673611111 | 1.000000e-03 | 56.7554555555556 | 20.9308273229167 |
| 29 | 1.226667e-05 | void_InitMeshDecomp(Int_t_Int_t_Int_t | 1.12770555555556e-5 | 1.08301957733312e-5 | 0.960776748972221 | 1.226667e-05 | 8.06748188405792 | 11.7103605434956 |
| 30 | 1.573333e-06 | void_ParseCommandLineOptions(int_char_**_Int_t... | 2.08527777777778e-6 | 2.01648854425741e-6 | 0.978600822222221 | 1.573333e-06 | 32.5388418079097 | 28.1666447621233 |
| 31 | 1.296667e-07 | void_VerifyAndWriteFinalOutput(Real_t_Domain | 9.57197219605595e-8 | 9.60599283426180e-6 | 0.109382572277778 | 1.296667e-07 | 26.1801630124220 | 7308.22069480344 |
print(dict_resultDF[list_resVar[1]].mean())
dict_resultDF[list_resVar[1]]
real_Inclusive 3.516647e+02 predicted_Inclusive 3.853701e+02 predicted_Inclusive_from_call 1.046825e+04 predicted_call 6.352180e+07 real_call 3.516647e+02 real vs predicted all @Inclusive 1.170237e+02 real vs predicted using call @Inclusive 6.688036e+05 dtype: float64
/tmp/ipykernel_121/261304090.py:1: FutureWarning: The default value of numeric_only in DataFrame.mean is deprecated. In a future version, it will default to False. In addition, specifying 'numeric_only=None' is deprecated. Select only valid columns or specify the value of numeric_only to silence this warning.
| real_Inclusive | functionName | predicted_Inclusive | predicted_Inclusive_from_call | predicted_call | real_call | real vs predicted all @Inclusive | real vs predicted using call @Inclusive | |
|---|---|---|---|---|---|---|---|---|
| 0 | 4.651960e+03 | .TAU_application | 4112.13002651492 | 3755.07819771439 | 0.999999999999999 | 4.651960e+03 | 11.6043617773413 | 19.2796600003743 |
| 1 | 5.133010e+02 | MPI_Allreduce() | 439.345968776950 | 12124.7559208733 | 69114.4138888889 | 5.133010e+02 | 14.4077317642182 | 2262.11422165031 |
| 2 | 3.833333e-02 | MPI_Barrier() | 0.000869176944444444 | 18.5004563418933 | 662.485549774719 | 3.833333e-02 | 97.7325818840580 | 48162.0600223303 |
| 3 | 9.000000e-03 | MPI_Comm_rank() | 0.0165754414998621 | 0.00575717034518276 | 7682.31799535170 | 9.000000e-03 | 84.1715722206905 | 36.0314406090804 |
| 4 | 4.553333e-07 | MPI_Comm_size() | 4.85952941689757e-7 | 4.90953764193764e-7 | 0.988953189305555 | 4.553333e-07 | 6.72465776495400 | 7.82293503523359 |
| 5 | 7.433333e-01 | MPI_Finalize() | 0.501003301920031 | 130774.528268482 | 32774.5344861112 | 7.433333e-01 | 32.6004526564981 | 17592885.8657150 |
| 6 | 6.153333e-01 | MPI_Init() | 0.503405555555556 | 15072.7188036146 | 30426.8863055556 | 6.153333e-01 | 18.1897797038642 | 2449420.93233174 |
| 7 | 8.066667e-02 | MPI_Irecv() | 0.0635597911803491 | -0.0896068042327797 | -37413.2240107461 | 8.066667e-02 | 21.2068704375837 | 211.082815164603 |
| 8 | 8.950000e-01 | MPI_Isend() | 0.426386241911113 | 1.11110221315045 | 26027.4814559232 | 8.950000e-01 | 52.3590791160767 | 24.1454986760275 |
| 9 | 7.166667e-02 | MPI_Reduce() | 0.0600932981444429 | 786.657959823452 | 16456.6172194788 | 7.166667e-02 | 16.1488863100797 | 1097562.26952110 |
| 10 | 4.289367e+01 | MPI_Wait() | 72.0485507261410 | 11.6430685704400 | 5079.97374444445 | 4.289367e+01 | 67.9701371441183 | 72.8559727455335 |
| 11 | 1.180570e+02 | MPI_Waitall() | 2087.96064418750 | 159223.010844645 | 1975772.85318665 | 1.180570e+02 | 1668.60384745292 | 134769.606075578 |
| 12 | 3.164563e+02 | Real_t_CalcElemVolume(const | 337.081473253762 | 293.728744937127 | 2030468957.63812 | 3.164563e+02 | 6.51753109289281 | 7.18190347363545 |
| 13 | 2.020000e-06 | StrToInt | 1.91816666666667e-6 | 2.17858055555555e-6 | 2.29777777777778 | 2.020000e-06 | 5.04125412541255 | 7.85052255225513 |
| 14 | 4.651960e+03 | int_main(int_char_**) | 4112.13124454251 | 3755.07819771439 | 0.999999999999999 | 4.651960e+03 | 11.6043355942377 | 19.2796600003743 |
| 15 | 7.690063e+02 | void_CalcKinematicsForElems(Domain | 748.661450811180 | 1138.63521296804 | 1526.19624444444 | 7.690063e+02 | 2.64560662770699 | 48.0657783444397 |
| 16 | 5.460667e+00 | void_CommMonoQ(Domain | 58.6305977858969 | 3.76506625783785 | 8809.01525702766 | 5.460667e+00 | 973.689374665429 | 31.0511611920794 |
| 17 | 9.966667e-02 | void_CommRecv(Domain | 0.0979398580451694 | 0.0957780183755544 | 3509.64698308692 | 9.966667e-02 | 1.73258390116784 | 3.90165380379157 |
| 18 | 2.321700e+01 | void_CommSBN(Domain | 0.590025671762993 | 0.256589508063414 | 366.193383333333 | 2.321700e+01 | 97.4586480950898 | 98.8948205708601 |
| 19 | 1.274573e+02 | void_CommSend(Domain | 319.835497015011 | 7305.78070596617 | 81149.4056222222 | 1.274573e+02 | 150.935343342356 | 5631.94222325340 |
| 20 | 2.990133e+01 | void_CommSyncPosVel(Domain | 40.4090521433832 | 274.587516028816 | 6030.22978611111 | 2.990133e+01 | 35.1413052150957 | 818.311946051958 |
| 21 | 5.866667e-02 | void_Domain::BuildMesh(Int_t_Int_t_Int_t) | 0.0102553923824921 | 0.385413936939769 | 43.8605583333333 | 5.866667e-02 | 82.5192175298429 | 556.955574329152 |
| 22 | 2.166667e-02 | void_Domain::CreateRegionIndexSets(Int_t_Int_t) | 0.00763415378183217 | 0.0574109414347394 | 7.60888888888891 | 2.166667e-02 | 64.7654440838515 | 164.973575852643 |
| 23 | 9.360000e-01 | void_Domain::Domain(Int_t_Index_t_Index_t_Inde... | 1.30391133111838 | 441.271000398884 | 293.553219444444 | 9.360000e-01 | 39.3067661451264 | 47044.3376494534 |
| 24 | 7.000000e-03 | void_Domain::SetupBoundaryConditions(Int_t) | 0.00485935192872183 | 0.0233812701063779 | 5.05637777777779 | 7.000000e-03 | 30.5806867325452 | 234.018144376826 |
| 25 | 4.000000e-03 | void_Domain::SetupCommBuffers(Int_t) | 0.00504001017854632 | 0.0972049848525025 | 19.5226333333333 | 4.000000e-03 | 26.0002544636580 | 2330.12462131256 |
| 26 | 1.866667e-02 | void_Domain::SetupElementConnectivities(Int_t) | 0.0171686507686722 | 2.23505193201573 | 130.968395555556 | 1.866667e-02 | 8.02508516782757 | 11873.4924929414 |
| 27 | 2.836667e-05 | void_Domain::SetupSymmetryPlanes(Int_t) | 3.88307804958058e-5 | 3.88943505553212e-5 | 1.01111111111111 | 2.836667e-05 | 36.8887679053082 | 37.1128691726950 |
| 28 | 1.000000e-03 | void_Domain::~Domain() | 0.000432445444444444 | 0.000790691726770833 | 1.85837673611111 | 1.000000e-03 | 56.7554555555556 | 20.9308273229167 |
| 29 | 1.226667e-05 | void_InitMeshDecomp(Int_t_Int_t_Int_t | 1.12770555555556e-5 | 1.08301957733312e-5 | 0.960776748972221 | 1.226667e-05 | 8.06748188405792 | 11.7103605434956 |
| 30 | 3.593333e-06 | void_ParseCommandLineOptions(int_char_**_Int_t... | 3.94702777777778e-6 | 4.73434483566820e-6 | 0.978600822222221 | 3.593333e-06 | 9.84307359307357 | 31.7535668553303 |
| 31 | 1.296667e-07 | void_VerifyAndWriteFinalOutput(Real_t_Domain | 1.36824327345807e-7 | 9.60599283426180e-6 | 0.109382572277778 | 1.296667e-07 | 5.52004679625255 | 7308.22069480344 |
print(dict_resultDF[list_resVar[2]].mean())
dict_resultDF[list_resVar[2]]
real_#Subrs 6.717856e+07+0.000000e+00j predicted_#Subrs 6.091424e+07+0.000000e+00j predicted_#Subrs_from_call 1.192909e+08+0.000000e+00j predicted_call 6.352180e+07+0.000000e+00j real_call 6.717856e+07+0.000000e+00j real vs predicted all @#Subrs N000000000000a000000000000N real vs predicted using call @#Subrs N000000000000a000000000000N dtype: complex128
/tmp/ipykernel_121/1563136227.py:1: FutureWarning: The default value of numeric_only in DataFrame.mean is deprecated. In a future version, it will default to False. In addition, specifying 'numeric_only=None' is deprecated. Select only valid columns or specify the value of numeric_only to silence this warning.
| real_#Subrs | functionName | predicted_#Subrs | predicted_#Subrs_from_call | predicted_call | real_call | real vs predicted all @#Subrs | real vs predicted using call @#Subrs | |
|---|---|---|---|---|---|---|---|---|
| 0 | 1.000000e+00 | .TAU_application | 0.999999999999999 | 0.999999999999998 | 0.999999999999999 | 1.000000e+00 | 1.11022302462516e-13 | 2.22044604925031e-13 |
| 1 | 0.000000e+00 | MPI_Allreduce() | 1012881.74466418 | 0 | 69114.4138888889 | 0.000000e+00 | zoo | nan |
| 2 | 0.000000e+00 | MPI_Barrier() | -12.4034790238095 | 0 | 662.485549774719 | 0.000000e+00 | zoo | nan |
| 3 | 0.000000e+00 | MPI_Comm_rank() | 0.00833333333333333 | 0 | 7682.31799535170 | 0.000000e+00 | zoo | nan |
| 4 | 0.000000e+00 | MPI_Comm_size() | 0 | 0 | 0.988953189305555 | 0.000000e+00 | nan | nan |
| 5 | 0.000000e+00 | MPI_Finalize() | 10781.0178333333 | 0 | 32774.5344861112 | 0.000000e+00 | zoo | nan |
| 6 | 0.000000e+00 | MPI_Init() | 10802.6457222222 | 0 | 30426.8863055556 | 0.000000e+00 | zoo | nan |
| 7 | 1.360193e+04 | MPI_Irecv() | 609.931260790102 | 0 | -37413.2240107461 | 1.360193e+04 | 95.5158487705907 | 100.000000000000 |
| 8 | 0.000000e+00 | MPI_Isend() | 27108.9717494639 | 0 | 26027.4814559232 | 0.000000e+00 | zoo | nan |
| 9 | 0.000000e+00 | MPI_Reduce() | 57.6759273283490 | 0 | 16456.6172194788 | 0.000000e+00 | zoo | nan |
| 10 | 0.000000e+00 | MPI_Wait() | 2561.70743888889 | 0 | 5079.97374444445 | 0.000000e+00 | zoo | nan |
| 11 | 0.000000e+00 | MPI_Waitall() | 61716.8215638889 | 0 | 1975772.85318665 | 0.000000e+00 | zoo | nan |
| 12 | 0.000000e+00 | Real_t_CalcElemVolume(const | 2133.78080555556 | 0 | 2030468957.63812 | 0.000000e+00 | zoo | nan |
| 13 | 0.000000e+00 | StrToInt | 0 | 0 | 2.29777777777778 | 0.000000e+00 | nan | nan |
| 14 | 1.127600e+04 | int_main(int_char_**) | 11276.0268521505 | 11276.0268521505 | 0.999999999999999 | 1.127600e+04 | 0.000238135425138490 | 0.000238135425025569 |
| 15 | 2.147480e+09 | void_CalcKinematicsForElems(Domain | 1926794448.76651 | 3200665305.73276 | 1526.19624444444 | 2.147480e+09 | 10.2764892447655 | 49.0428458347813 |
| 16 | 6.553600e+03 | void_CommMonoQ(Domain | 393545.089707081 | 47631.6026146341 | 8809.01525702766 | 6.553600e+03 | 5905.02151042299 | 626.800577005525 |
| 17 | 2.720387e+04 | void_CommRecv(Domain | 149067.171059722 | 34082.2257910500 | 3509.64698308692 | 2.720387e+04 | 447.963173346886 | 25.2844906522479 |
| 18 | 2.250080e+04 | void_CommSBN(Domain | 94859.2759238944 | 5667.74006367034 | 366.193383333333 | 2.250080e+04 | 321.581792309137 | 74.8109397724955 |
| 19 | 4.387880e+04 | void_CommSend(Domain | 18973116.3199341 | 869192.097502817 | 81149.4056222222 | 4.387880e+04 | 43139.8249722739 | 1880.89304516718 |
| 20 | 1.175140e+04 | void_CommSyncPosVel(Domain | 13265.3614213333 | 49681.4284501634 | 6030.22978611111 | 1.175140e+04 | 12.8832430291993 | 322.770295030067 |
| 21 | 0.000000e+00 | void_Domain::BuildMesh(Int_t_Int_t_Int_t) | 363.131579359959 | 0 | 43.8605583333333 | 0.000000e+00 | zoo | nan |
| 22 | 1.000000e+00 | void_Domain::CreateRegionIndexSets(Int_t_Int_t) | 67272.7613546246 | 7.60888888888891 | 7.60888888888891 | 1.000000e+00 | 6727176.13546246 | 660.888888888891 |
| 23 | 2.097160e+06 | void_Domain::Domain(Int_t_Index_t_Index_t_Inde... | 1629947.11989493 | 615627482.583672 | 293.553219444444 | 2.097160e+06 | 22.2783612173164 | 29255.2939491346 |
| 24 | 0.000000e+00 | void_Domain::SetupBoundaryConditions(Int_t) | 0 | 0 | 5.05637777777779 | 0.000000e+00 | nan | nan |
| 25 | 0.000000e+00 | void_Domain::SetupCommBuffers(Int_t) | 6.06878055555556 | 0 | 19.5226333333333 | 0.000000e+00 | zoo | nan |
| 26 | 0.000000e+00 | void_Domain::SetupElementConnectivities(Int_t) | 4.64711666666667 | 0 | 130.968395555556 | 0.000000e+00 | zoo | nan |
| 27 | 0.000000e+00 | void_Domain::SetupSymmetryPlanes(Int_t) | 0.0111111111111111 | 0 | 1.01111111111111 | 0.000000e+00 | zoo | nan |
| 28 | 0.000000e+00 | void_Domain::~Domain() | 0 | 0 | 1.85837673611111 | 0.000000e+00 | nan | nan |
| 29 | 0.000000e+00 | void_InitMeshDecomp(Int_t_Int_t_Int_t | 0 | 0 | 0.960776748972221 | 0.000000e+00 | nan | nan |
| 30 | 2.000000e+00 | void_ParseCommandLineOptions(int_char_**_Int_t... | 1.94444444444444 | 1.95720164444444 | 0.978600822222221 | 2.000000e+00 | 2.77777777777788 | 2.13991777777799 |
| 31 | 0.000000e+00 | void_VerifyAndWriteFinalOutput(Real_t_Domain | 0.0444444444444444 | 0 | 0.109382572277778 | 0.000000e+00 | zoo | nan |
jupyter_pwd = %pwd
if jupyter_pwd == "/":
%cd /workspace
# ipynb形式のライブラリのインポート
%run ./lib/lib.ipynb
# ipynb形式のライブラリノートを.py形式に変更したものをインポート
import lib
import lib.lab_lib
from lib.lab_lib import *
# 生データの入ったCSVファイルの保持されたディレクトリ名を格納している変数
csvDirPath = "./csv_files/"
# NPBのベンチマーク名のリスト
benchmarkNames = ["cg", "ep", "ft", "is", "lu", "mg"]
# NPBのプロセス数
npb_process :list[int] = [2, 4, 8, 16, 32, 64, 128, 256]
train_npb_process :list[int] = npb_process[:-1]
test_npb_process :list[int] = npb_process[-1:]
# NPBのCGの初期変数
cg_na: list[int] = [14000, 30000, 75000, 100000, 1500000]
cg_nonzer: list[int] = [11, 12, 13, 14, 15, 18, 21]
cg_niter: list[int] = [15, 30, 75, 90, 100]
cg_shift: list[int] = [20, 40, 60, 80, 110, 200]
train_cg_na: list[int] = cg_na[:-1]
train_cg_nonzer: list[int] = cg_nonzer[:-1]
train_cg_niter: list[int] = cg_niter[:-1]
train_cg_shift: list[int] = cg_shift[:-1]
test_cg_na: list[int] = cg_na[-1:]
test_cg_nonzer: list[int] = cg_nonzer[-1:]
test_cg_niter: list[int] = cg_niter[-1:]
test_cg_shift: list[int] = cg_shift[-1:]
# LULESH ベンチマークプログラムのプロセス数・問題サイズ・イテレーション数
lulesh_processes: list[int] = [8, 27, 64, 125, 216, 343, 512]
lulesh_iterations: list[int] = [8, 16, 32, 64, 128, 256]
lulesh_sizes: list[int] = [16, 24, 32, 48, 64, 128]
train_lulesh_processes: list[int] = [8, 27, 64, 125, 216, 343]
train_lulesh_iterations: list[int] = [8, 16, 32, 64, 128]
train_lulesh_sizes: list[int] = [16, 24, 32, 48]
test_lulesh_processes: list[int] = [512, 729, 1000]
test_lulesh_iterations: list[int] = [256, 512, 1024]
test_lulesh_sizes: list[int] = [64, 96, 128]
# Extra-Pのオプション
modelerNames: list[str] = [
# "refining",
"multi-parameter",
"default",
# "basic --options poly_exponents=-1,0,1,2,3 log_exponents=0,1 force_combination_exponents=1 allow_negative_exponents=1"
]
modelerOption: str = """ --options \#spm=Basic \#spo=poly_exponents=-1,0,1,2,3,log_exponents=0,1,force_combination_exponents=1,allow_negative_exponents=True"""
list_modelName: list[str] = [
"modelIp",
"modelLog",
"modelLinAndIp",
"modelLinAndLog",
"modelIpAndLin",
"modelIpAndLog",
"modelLogAndLin",
"modelLogAndIp",
"modelProcessDividedByProblemSize",
"modelProblemSizeDividedByProcess",
"modelInfiniteProductOfProblemSizeMultipliedByProcesses",
"modelInfiniteProductOfProblemSizeDividedByProcesses",
"modelLinearSumOf2elementCombination",
"modelLinearSumOfElementCombinations",
"modelLinearSumOf2elementCombinationWithSquared",
"modelLinearSumOf2elementCombinationWithCubed",
"modelSquareRootOfProcess",
"modelSquareRootTimesOtherElems",
"modelObeyOneParameter",
"modelLin"
# "modelBasicTree",
]
list_csvDir = [
"./csv_files/lulesh_1st/",
"./csv_files/lulesh_2nd/",
"./csv_files/lulesh_3rd/",
]
DEBUG:__main__:hello
# benchmark_lulesh.html と同様の方法を再現する
expVar: list[str] = ["process", "iteration", "size"]
resVar: str = "Exclusive"
trainDF_lulesh: pd.DataFrame = ret_averaged_rawDF_lulesh(
list_process=train_lulesh_processes,
list_iteration=train_lulesh_iterations,
list_size=train_lulesh_sizes,
list_csvDir=list_csvDir,
resVar=resVar,
)
testDF_lulesh: pd.DataFrame = ret_averaged_rawDF_lulesh(
list_process=test_lulesh_processes[-1:],
list_iteration=test_lulesh_iterations[-1:],
list_size=test_lulesh_sizes[-1:],
list_csvDir=list_csvDir,
resVar=resVar,
)
trainDF_lulesh = trainDF_lulesh.reset_index()
testDF_lulesh = testDF_lulesh.reset_index()
functionNames_lulesh: list[str] = sorted(list(set(trainDF_lulesh["Name"])))
dict_symbols_lulesh = {}
for elem in expVar:
dict_symbols_lulesh[elem] = symbols(elem, real=True)
target_env = [
(dict_symbols_lulesh["size"], test_lulesh_sizes[-1]),
(dict_symbols_lulesh["iteration"], test_lulesh_iterations[-1]),
(dict_symbols_lulesh["process"], test_lulesh_processes[-1]),
]
modelerName: str = "multi-parameter"
resVar_all: str = "Exclusive"
resVar_perCall: str = "ExclusivePerCall"
resVar_call: str = "#Call"
dict_models_lulesh_all = {}
dict_models_lulesh_perCall = {}
dict_models_lulesh_call = {}
# モデル構築
for functionName in functionNames_lulesh:
trainDF_lulesh_perFunc: pd.DataFrame = trainDF_lulesh[
trainDF_lulesh["Name"] == functionName
]
testDF_lulesh_perFUnc: pd.DataFrame = testDF_lulesh[
testDF_lulesh["Name"] == functionName
]
str_ExtraP_model_all: str = get_ExtraP_model(
inputDF_perFunc=trainDF_lulesh_perFunc,
expVar=expVar,
resVar=resVar_all,
functionName=functionName,
benchmarkName="lulesh",
modelerName=modelerName,
modelerOption=modelerOption,
dict_symbols=dict_symbols_lulesh,
)
dict_models_lulesh_all[functionName] = str_ExtraP_model_all
str_ExtraP_model_perCall: str = get_ExtraP_model(
inputDF_perFunc=trainDF_lulesh_perFunc,
expVar=expVar,
resVar=resVar_perCall,
functionName=functionName,
benchmarkName="lulesh",
modelerName=modelerName,
modelerOption=modelerOption,
dict_symbols=dict_symbols_lulesh,
)
dict_models_lulesh_perCall[functionName] = str_ExtraP_model_perCall
str_ExtraP_model_call: str = get_ExtraP_model(
inputDF_perFunc=trainDF_lulesh_perFunc,
expVar=expVar,
resVar=resVar_call,
functionName=functionName,
benchmarkName="lulesh",
modelerName=modelerName,
modelerOption=modelerOption,
dict_symbols=dict_symbols_lulesh,
)
dict_models_lulesh_call[functionName] = str_ExtraP_model_call
_list_series: list[pd.Series] = []
# 予測
for functionName in functionNames_lulesh:
# 全体
_all: float = dict_models_lulesh_all[functionName].subs(target_env_lulesh).evalf()
# 1コール当たり
_perCall: float = (
dict_models_lulesh_perCall[functionName].subs(target_env_lulesh).evalf()
)
# コール回数
_call: float = dict_models_lulesh_call[functionName].subs(target_env_lulesh).evalf()
target_lulesh_DF: pd.DataFrame = testDF_lulesh[
(testDF_lulesh["Name"] == functionName)
& (testDF_lulesh["process"] == test_lulesh_processes[-1])
& (testDF_lulesh["iteration"] == test_lulesh_iterations[-1])
& (testDF_lulesh["size"] == test_lulesh_sizes[-1])
]
target_lulesh_DF = target_lulesh_DF.reset_index()
# 実測値
_real_exclusive: float = target_lulesh_DF.loc[0][resVar_all]
_real_call: float = target_lulesh_DF.loc[0][resVar_call]
_tmp_series: pd.Series = pd.Series(dtype="object")
_tmp_series["Name"] = functionName
_tmp_series["all to all"] = _all
_tmp_series["perCall to all"] = _perCall * _call
_tmp_series["real exclusive"] = _real_exclusive
_tmp_series["real call"] = _real_call
_list_series.append(_tmp_series)
resultDF: pd.DataFrame = pd.DataFrame(data=_list_series)
resultDF = add_relativeErrorRateCol(
inputDF=resultDF,
real_colName="real exclusive",
predicted_colName="all to all",
targetColName="vs all to all",
)
resultDF = add_relativeErrorRateCol(
inputDF=resultDF,
real_colName="real exclusive",
predicted_colName="perCall to all",
targetColName="vs perCall to all",
)
print(resultDF.mean())
resultDF
# "vs all to all" より "vs perCall to all" のほうが精度がMAPEベースで良いことを確認
all to all 1.682026e+02 perCall to all 1.061613e+02 real exclusive 1.453734e+02 real call 6.717865e+07 vs all to all 9.842000e+01 vs perCall to all 7.618677e+01 dtype: float64
/tmp/ipykernel_121/2418870204.py:123: FutureWarning: The default value of numeric_only in DataFrame.mean is deprecated. In a future version, it will default to False. In addition, specifying 'numeric_only=None' is deprecated. Select only valid columns or specify the value of numeric_only to silence this warning.
| Name | all to all | perCall to all | real exclusive | real call | vs all to all | vs perCall to all | |
|---|---|---|---|---|---|---|---|
| 0 | .TAU_application | 3.58708333333333e-6 | 2.10570898355123e-6 | 3.366667e-06 | 1.000000e+00 | 6.54702970297031 | 37.4541886073892 |
| 1 | MPI_Allreduce() | 437.915990349888 | 179.465101548773 | 5.133010e+02 | 1.023000e+03 | 14.6863165374920 | 65.0370637211358 |
| 2 | MPI_Barrier() | 0.000816330555555555 | 0.0279258262284882 | 3.833333e-02 | 1.000000e+00 | 97.8704420289855 | 27.1500185343787 |
| 3 | MPI_Comm_rank() | 0.0165749444775296 | 0.00691026689926807 | 9.000000e-03 | 9.221000e+03 | 84.1660497503293 | 23.2192566747993 |
| 4 | MPI_Comm_size() | 4.85952941689757e-7 | 4.96437818799606e-7 | 4.553333e-07 | 1.000000e+00 | 6.72465776495400 | 9.02733941426189 |
| 5 | MPI_Finalize() | 0.488460112539233 | 3.99012618543521 | 7.433333e-01 | 1.000000e+00 | 34.2878772368745 | 436.788276067517 |
| 6 | MPI_Init() | 0.493019444444445 | 0.495375000000000 | 6.153333e-01 | 1.000000e+00 | 19.8776634163958 | 19.4948537378115 |
| 7 | MPI_Irecv() | 0.0607189920652085 | 0.0641030960977833 | 5.633333e-02 | 3.773280e+04 | 7.78519301516302 | 13.7924782800888 |
| 8 | MPI_Isend() | 3.17498669266321 | 1.14257579197692 | 8.950000e-01 | 3.773280e+04 | 254.747116498683 | 27.6620996622256 |
| 9 | MPI_Reduce() | 0.0581820601722947 | 0.0478019236476088 | 7.166667e-02 | 1.000000e+00 | 18.8157299921470 | 33.2996414219412 |
| 10 | MPI_Wait() | 71.5007503928785 | 61.3435829940378 | 4.289367e+01 | 3.773280e+04 | 66.6930247500683 | 43.0131480032898 |
| 11 | MPI_Waitall() | 1919.56884083925 | 247.646034581573 | 1.180570e+02 | 3.073000e+03 | 1525.96782981038 | 109.768192128864 |
| 12 | Real_t_CalcElemVolume(const | 335.378503734694 | 310.960204792449 | 3.164563e+02 | 2.149580e+09 | 5.97939380831707 | 1.73677312221611 |
| 13 | StrToInt | 1.91816666666667e-6 | 1.89625000000000e-6 | 2.020000e-06 | 2.000000e+00 | 5.04125412541255 | 6.12623762376250 |
| 14 | int_main(int_char_**) | 2135.89439042910 | 2103.48508973343 | 3.181085e+03 | 1.000000e+00 | 32.8564187870145 | 33.8752315724532 |
| 15 | void_CalcKinematicsForElems(Domain | 445.419547861958 | 448.315849943123 | 4.528560e+02 | 1.024000e+03 | 1.64212291281154 | 1.00255932501224 |
| 16 | void_CommMonoQ(Domain | 5.25854310710730 | 2.92473189431500 | 1.440000e+00 | 1.024000e+03 | 265.176604660229 | 103.106381549652 |
| 17 | void_CommRecv(Domain | 0.00195521666666667 | -0.321952845725027 | 4.700000e-02 | 3.073000e+03 | 95.8399645390071 | 785.006054734100 |
| 18 | void_CommSBN(Domain | 1.57211617935831 | 4.76941347075195 | 2.805667e+00 | 1.025000e+03 | 43.9663949379240 | 69.9921636242822 |
| 19 | void_CommSend(Domain | 3.13405379446953 | 16.3658435701341 | 8.500000e+00 | 3.073000e+03 | 63.1287788885937 | 92.5393361192247 |
| 20 | void_CommSyncPosVel(Domain | 21.7678534923438 | 15.4250480861394 | 1.143733e+01 | 1.024000e+03 | 90.3228039083456 | 34.8657736605796 |
| 21 | void_Domain::BuildMesh(Int_t_Int_t_Int_t) | 0.0101294785767843 | 0.00878725560241810 | 5.866667e-02 | 1.000000e+00 | 82.7338433350268 | 85.0217234049691 |
| 22 | void_Domain::CreateRegionIndexSets(Int_t_Int_t) | 0.00722072107514937 | 0.00754920639975394 | 2.166667e-02 | 1.000000e+00 | 66.6735950377721 | 65.1575089242126 |
| 23 | void_Domain::Domain(Int_t_Index_t_Index_t_Inde... | 0.731860884361024 | 0.965704856368412 | 5.293333e-01 | 1.000000e+00 | 38.2608723603950 | 82.4379451577605 |
| 24 | void_Domain::SetupBoundaryConditions(Int_t) | 0.00485935192872183 | 0.00462411456065167 | 7.000000e-03 | 1.000000e+00 | 30.5806867325452 | 33.9412205621190 |
| 25 | void_Domain::SetupCommBuffers(Int_t) | 0.00486234543933642 | 0.00497909186700407 | 4.000000e-03 | 1.000000e+00 | 21.5586359834105 | 24.4772966751018 |
| 26 | void_Domain::SetupElementConnectivities(Int_t) | 0.0171993242439927 | 0.0170655822920854 | 1.866667e-02 | 1.000000e+00 | 7.86076297861032 | 8.57723772097084 |
| 27 | void_Domain::SetupSymmetryPlanes(Int_t) | 3.86090468625521e-5 | 3.84669401096583e-5 | 2.836667e-05 | 1.000000e+00 | 36.1070982228629 | 35.6061343466214 |
| 28 | void_Domain::~Domain() | 0.000432445444444444 | 0.000425474400000000 | 1.000000e-03 | 1.000000e+00 | 56.7554555555556 | 57.4525600000000 |
| 29 | void_InitMeshDecomp(Int_t_Int_t_Int_t | 1.12770555555556e-5 | 1.12723333333333e-5 | 1.226667e-05 | 1.000000e+00 | 8.06748188405792 | 8.10597826086959 |
| 30 | void_ParseCommandLineOptions(int_char_**_Int_t... | 2.08527777777778e-6 | 2.06058333333333e-6 | 1.573333e-06 | 1.000000e+00 | 32.5388418079097 | 30.9692796610169 |
| 31 | void_VerifyAndWriteFinalOutput(Real_t_Domain | 9.57197219605595e-8 | 8.78196087913656e-8 | 1.296667e-07 | 1.000000e-03 | 26.1801630124220 | 32.2727952765818 |
resultDF_better_than_all_to_all: pd.DataFrame = resultDF[
resultDF["vs all to all"] > resultDF["vs perCall to all"]
]
resultDF_better_than_all_to_all
| Name | all to all | perCall to all | real exclusive | real call | vs all to all | vs perCall to all | |
|---|---|---|---|---|---|---|---|
| 2 | MPI_Barrier() | 0.000816330555555555 | 0.0279258262284882 | 0.038333 | 1.000000e+00 | 97.8704420289855 | 27.1500185343787 |
| 3 | MPI_Comm_rank() | 0.0165749444775296 | 0.00691026689926807 | 0.009000 | 9.221000e+03 | 84.1660497503293 | 23.2192566747993 |
| 6 | MPI_Init() | 0.493019444444445 | 0.495375000000000 | 0.615333 | 1.000000e+00 | 19.8776634163958 | 19.4948537378115 |
| 8 | MPI_Isend() | 3.17498669266321 | 1.14257579197692 | 0.895000 | 3.773280e+04 | 254.747116498683 | 27.6620996622256 |
| 10 | MPI_Wait() | 71.5007503928785 | 61.3435829940378 | 42.893667 | 3.773280e+04 | 66.6930247500683 | 43.0131480032898 |
| 11 | MPI_Waitall() | 1919.56884083925 | 247.646034581573 | 118.057000 | 3.073000e+03 | 1525.96782981038 | 109.768192128864 |
| 12 | Real_t_CalcElemVolume(const | 335.378503734694 | 310.960204792449 | 316.456333 | 2.149580e+09 | 5.97939380831707 | 1.73677312221611 |
| 15 | void_CalcKinematicsForElems(Domain | 445.419547861958 | 448.315849943123 | 452.856000 | 1.024000e+03 | 1.64212291281154 | 1.00255932501224 |
| 16 | void_CommMonoQ(Domain | 5.25854310710730 | 2.92473189431500 | 1.440000 | 1.024000e+03 | 265.176604660229 | 103.106381549652 |
| 20 | void_CommSyncPosVel(Domain | 21.7678534923438 | 15.4250480861394 | 11.437333 | 1.024000e+03 | 90.3228039083456 | 34.8657736605796 |
| 22 | void_Domain::CreateRegionIndexSets(Int_t_Int_t) | 0.00722072107514937 | 0.00754920639975394 | 0.021667 | 1.000000e+00 | 66.6735950377721 | 65.1575089242126 |
| 27 | void_Domain::SetupSymmetryPlanes(Int_t) | 3.86090468625521e-5 | 3.84669401096583e-5 | 0.000028 | 1.000000e+00 | 36.1070982228629 | 35.6061343466214 |
| 30 | void_ParseCommandLineOptions(int_char_**_Int_t... | 2.08527777777778e-6 | 2.06058333333333e-6 | 0.000002 | 1.000000e+00 | 32.5388418079097 | 30.9692796610169 |
floatWeightedMAPE_all: float = calcWeightedMAPEscore(
inputDF=resultDF,
inputColumnDict={
"funcName": "Name",
"call": "real call",
"MAPE": "vs all to all",
},
)
floatWeightedMAPE_perCall: float = calcWeightedMAPEscore(
inputDF=resultDF,
inputColumnDict={
"funcName": "Name",
"call": "real call",
"MAPE": "vs perCall to all",
},
)
pd.Series(
{
"weighted all to all": floatWeightedMAPE_all,
"weighted perCall to all": floatWeightedMAPE_perCall,
}
)
weighted all to all 5.98776005636523 weighted perCall to all 1.73978719275924 dtype: object
functionNames_lulesh_better_than_all_to_all: list[str] = sorted(
list(set(resultDF_better_than_all_to_all["Name"]))
)
functionNames_lulesh_better_than_all_to_all
['MPI_Barrier()', 'MPI_Comm_rank()', 'MPI_Init()', 'MPI_Isend()', 'MPI_Wait()', 'MPI_Waitall()', 'Real_t_CalcElemVolume(const', 'void_CalcKinematicsForElems(Domain', 'void_CommMonoQ(Domain', 'void_CommSyncPosVel(Domain', 'void_Domain::CreateRegionIndexSets(Int_t_Int_t)', 'void_Domain::SetupSymmetryPlanes(Int_t)', 'void_ParseCommandLineOptions(int_char_**_Int_t_cmdLineOpts']
for functionName in functionNames_lulesh_better_than_all_to_all:
resultDF_better_than_all_to_all_perFunc: pd.DataFrame = (
resultDF_better_than_all_to_all[
resultDF_better_than_all_to_all["Name"] == functionName
].reset_index()
)
try:
_mape_all: float = resultDF_better_than_all_to_all_perFunc.loc[0][
"vs all to all"
]
except:
_mape_all: float = -1.0
try:
_mape_perCall: float = resultDF_better_than_all_to_all_perFunc.loc[0][
"vs perCall to all"
]
except:
_mape_perCall: float = -1.0
print(f"\\item[{functionName}]\\mbox\\\\")
print("\\begin{description}")
print(f"\\item[直接方式({_mape_all})]")
print("\\begin{dmath}")
print(f"{sympy.latex(dict_models_lulesh_all[functionName])}")
print("\\end{dmath}")
print(f"\\item[分離方式({_mape_perCall})]")
print("\\begin{dmath}")
print(
f"({sympy.latex(dict_models_lulesh_perCall[functionName])}) * ({sympy.latex(dict_models_lulesh_call[functionName])})"
)
print("\\end{dmath}")
print("\\end{description}")
print("\n")
\item[MPI_Barrier()]\mbox\\
\begin{description}
\item[直接方式(97.8704420289855)]
\begin{dmath}
0.0008163305555555552
\end{dmath}
\item[分離方式(27.1500185343787)]
\begin{dmath}
(2.5894115476979053 \cdot 10^{-8} iteration^{2} + 0.0007738781980994149) * (0.9999999999999989)
\end{dmath}
\end{description}
\item[MPI_Comm_rank()]\mbox\\
\begin{description}
\item[直接方式(84.1660497503293)]
\begin{dmath}
1.2634769214973346 \cdot 10^{-7} iteration size + 6.461875508750511 \cdot 10^{-8} size + 6.028571428571336 \cdot 10^{-6}
\end{dmath}
\item[分離方式(23.2192566747993)]
\begin{dmath}
(8.210259548958283 \cdot 10^{-7} - \frac{9.167435109616658 \cdot 10^{-6}}{size}) * (9.000000000000002 iteration + 5.000000000000079)
\end{dmath}
\end{description}
\item[MPI_Init()]\mbox\\
\begin{description}
\item[直接方式(19.8776634163958)]
\begin{dmath}
0.49301944444444473
\end{dmath}
\item[分離方式(19.4948537378115)]
\begin{dmath}
(0.49537500000000034) * (0.9999999999999989)
\end{dmath}
\end{description}
\item[MPI_Isend()]\mbox\\
\begin{description}
\item[直接方式(254.747116498683)]
\begin{dmath}
1.3993860867527394 \cdot 10^{-9} iteration size^{3} + 7.979056435526728 \cdot 10^{-8} size^{3} + 0.00249501250422031
\end{dmath}
\item[分離方式(27.6620996622256)]
\begin{dmath}
(1.5055130336533512 \cdot 10^{-11} size^{3} + 2.9729002280179477 \cdot 10^{-6} + \frac{3.976455855019544 \cdot 10^{-9} size^{3}}{iteration}) * (26.12330995183692 iteration + 14.478159722222374)
\end{dmath}
\end{description}
\item[MPI_Wait()]\mbox\\
\begin{description}
\item[直接方式(66.6930247500683)]
\begin{dmath}
3.329256869707227 \cdot 10^{-8} iteration size^{3} + 0.005503515999093116
\end{dmath}
\item[分離方式(43.0131480032898)]
\begin{dmath}
(1.0823000294871803 \cdot 10^{-9} size^{3} + 8.55947827071325 \cdot 10^{-6} + \frac{6.663734395402893 \cdot 10^{-9} size^{3}}{iteration}) * (26.12330995183692 iteration + 14.478159722222374)
\end{dmath}
\end{description}
\item[MPI_Waitall()]\mbox\\
\begin{description}
\item[直接方式(1525.96782981038)]
\begin{dmath}
8.713335972591822 \cdot 10^{-10} iteration^{2} size^{3} + 1.6546795016402215 \cdot 10^{-6} size^{3} + 0.015882696300209494
\end{dmath}
\item[分離方式(109.768192128864)]
\begin{dmath}
(3.831994679457664 \cdot 10^{-8} size^{3} + 0.0002249575098478947) * (2.9999999999999987 iteration + 1.0000000000000082)
\end{dmath}
\end{description}
\item[Real_t_CalcElemVolume(const]\mbox\\
\begin{description}
\item[直接方式(5.97939380831707)]
\begin{dmath}
1.562338241151975 \cdot 10^{-7} iteration size^{3} - 0.00013220805704912162 iteration + 0.004302233217541518
\end{dmath}
\item[分離方式(1.73677312221611)]
\begin{dmath}
(1.4244067448465714 \cdot 10^{-7} + \frac{2.841433578567945 \cdot 10^{-7}}{size}) * (1.000002222849363 iteration size^{3} + 0.9999521780095053 size^{3} - 1.0172315458026697)
\end{dmath}
\end{description}
\item[void_CalcKinematicsForElems(Domain]\mbox\\
\begin{description}
\item[直接方式(1.64212291281154)]
\begin{dmath}
2.0733238239747908 \cdot 10^{-7} iteration size^{3} + 0.00017105421681036588 process + 0.005592745678458262
\end{dmath}
\item[分離方式(1.00255932501224)]
\begin{dmath}
(2.0867997246578587 \cdot 10^{-7} size^{3} + 0.00017482559351284662) * (1.0 iteration + 5.681593783157123 \cdot 10^{-16})
\end{dmath}
\end{description}
\item[void_CommMonoQ(Domain]\mbox\\
\begin{description}
\item[直接方式(265.176604660229)]
\begin{dmath}
2.446998149980512 \cdot 10^{-9} iteration size^{3} + 3.5138071062346432 \cdot 10^{-6} iteration + 5.645486111246788 \cdot 10^{-5}
\end{dmath}
\item[分離方式(103.106381549652)]
\begin{dmath}
(1.1375226076740821 \cdot 10^{-10} iteration size^{2} + 5.798011853623222 \cdot 10^{-8} size^{2} - 2.2090209387745293 \cdot 10^{-6}) * (1.0 iteration + 5.681593783157123 \cdot 10^{-16})
\end{dmath}
\end{description}
\item[void_CommSyncPosVel(Domain]\mbox\\
\begin{description}
\item[直接方式(90.3228039083456)]
\begin{dmath}
1.0136090651622634 \cdot 10^{-8} iteration size^{3} + 0.0007645633385803624
\end{dmath}
\item[分離方式(34.8657736605796)]
\begin{dmath}
(\frac{1.1227901165638597 \cdot 10^{-6} iteration}{process} + 7.178827915605421 \cdot 10^{-9} size^{3} + 8.614385230642934 \cdot 10^{-6} - \frac{0.001333921557274115}{process}) * (1.0 iteration + 5.681593783157123 \cdot 10^{-16})
\end{dmath}
\end{description}
\item[void_Domain::CreateRegionIndexSets(Int_t_Int_t)]\mbox\\
\begin{description}
\item[直接方式(66.6735950377721)]
\begin{dmath}
4.437481108533314 \cdot 10^{-7} size^{2} - 4.940903785569108 \cdot 10^{-5} - \frac{0.00023893521592081838}{process}
\end{dmath}
\item[分離方式(65.1575089242126)]
\begin{dmath}
(4.6436058976512 \cdot 10^{-7} size^{2} - 5.86219300780953 \cdot 10^{-5} - \frac{0.00025557287968530976}{process}) * (0.9999999999999989)
\end{dmath}
\end{description}
\item[void_Domain::SetupSymmetryPlanes(Int_t)]\mbox\\
\begin{description}
\item[直接方式(36.1070982228629)]
\begin{dmath}
2.3353654107502677 \cdot 10^{-9} size^{2} + 3.4641997281972096 \cdot 10^{-7}
\end{dmath}
\item[分離方式(35.6061343466214)]
\begin{dmath}
(2.326003005061153 \cdot 10^{-9} size^{2} + 3.5770687473640016 \cdot 10^{-7}) * (0.9999999999999989)
\end{dmath}
\end{description}
\item[void_ParseCommandLineOptions(int_char_**_Int_t_cmdLineOpts]\mbox\\
\begin{description}
\item[直接方式(32.5388418079097)]
\begin{dmath}
2.0852777777777786 \cdot 10^{-6}
\end{dmath}
\item[分離方式(30.9692796610169)]
\begin{dmath}
(2.060583333333334 \cdot 10^{-6}) * (0.9999999999999989)
\end{dmath}
\end{description}
# benchmark_lulesh.html と同様の方法を再現する(@Inclusive)
expVar: list[str] = ["process", "iteration", "size"]
resVar: str = "Inclusive"
trainDF_lulesh: pd.DataFrame = ret_averaged_rawDF_lulesh(
list_process=train_lulesh_processes,
list_iteration=train_lulesh_iterations,
list_size=train_lulesh_sizes,
list_csvDir=list_csvDir,
resVar=resVar,
)
testDF_lulesh: pd.DataFrame = ret_averaged_rawDF_lulesh(
list_process=test_lulesh_processes[-1:],
list_iteration=test_lulesh_iterations[-1:],
list_size=test_lulesh_sizes[-1:],
list_csvDir=list_csvDir,
resVar=resVar,
)
trainDF_lulesh = trainDF_lulesh.reset_index()
testDF_lulesh = testDF_lulesh.reset_index()
functionNames_lulesh: list[str] = sorted(list(set(trainDF_lulesh["Name"])))
dict_symbols_lulesh = {}
for elem in expVar:
dict_symbols_lulesh[elem] = symbols(elem, real=True)
target_env = [
(dict_symbols_lulesh["size"], test_lulesh_sizes[-1]),
(dict_symbols_lulesh["iteration"], test_lulesh_iterations[-1]),
(dict_symbols_lulesh["process"], test_lulesh_processes[-1]),
]
modelerName: str = "multi-parameter"
resVar_all: str = "Inclusive"
resVar_perCall: str = "InclusivePerCall"
resVar_call: str = "#Call"
dict_models_lulesh_all = {}
dict_models_lulesh_perCall = {}
dict_models_lulesh_call = {}
# モデル構築
for functionName in functionNames_lulesh:
trainDF_lulesh_perFunc: pd.DataFrame = trainDF_lulesh[
trainDF_lulesh["Name"] == functionName
]
testDF_lulesh_perFUnc: pd.DataFrame = testDF_lulesh[
testDF_lulesh["Name"] == functionName
]
str_ExtraP_model_all: str = get_ExtraP_model(
inputDF_perFunc=trainDF_lulesh_perFunc,
expVar=expVar,
resVar=resVar_all,
functionName=functionName,
benchmarkName="lulesh",
modelerName=modelerName,
modelerOption=modelerOption,
dict_symbols=dict_symbols_lulesh,
)
dict_models_lulesh_all[functionName] = str_ExtraP_model_all
str_ExtraP_model_perCall: str = get_ExtraP_model(
inputDF_perFunc=trainDF_lulesh_perFunc,
expVar=expVar,
resVar=resVar_perCall,
functionName=functionName,
benchmarkName="lulesh",
modelerName=modelerName,
modelerOption=modelerOption,
dict_symbols=dict_symbols_lulesh,
)
dict_models_lulesh_perCall[functionName] = str_ExtraP_model_perCall
str_ExtraP_model_call: str = get_ExtraP_model(
inputDF_perFunc=trainDF_lulesh_perFunc,
expVar=expVar,
resVar=resVar_call,
functionName=functionName,
benchmarkName="lulesh",
modelerName=modelerName,
modelerOption=modelerOption,
dict_symbols=dict_symbols_lulesh,
)
dict_models_lulesh_call[functionName] = str_ExtraP_model_call
_list_series: list[pd.Series] = []
# 予測
for functionName in functionNames_lulesh:
# 全体
_all: float = dict_models_lulesh_all[functionName].subs(target_env_lulesh).evalf()
# 1コール当たり
_perCall: float = (
dict_models_lulesh_perCall[functionName].subs(target_env_lulesh).evalf()
)
# コール回数
_call: float = dict_models_lulesh_call[functionName].subs(target_env_lulesh).evalf()
target_lulesh_DF: pd.DataFrame = testDF_lulesh[
(testDF_lulesh["Name"] == functionName)
& (testDF_lulesh["process"] == test_lulesh_processes[-1])
& (testDF_lulesh["iteration"] == test_lulesh_iterations[-1])
& (testDF_lulesh["size"] == test_lulesh_sizes[-1])
]
target_lulesh_DF = target_lulesh_DF.reset_index()
# 実測値
_real_inclusive: float = target_lulesh_DF.loc[0][resVar_all]
_real_call: float = target_lulesh_DF.loc[0][resVar_call]
_tmp_series: pd.Series = pd.Series(dtype="object")
_tmp_series["Name"] = functionName
_tmp_series["all to all"] = _all
_tmp_series["perCall to all"] = _perCall * _call
_tmp_series["real inclusive"] = _real_inclusive
_tmp_series["real call"] = _real_call
_list_series.append(_tmp_series)
resultDF: pd.DataFrame = pd.DataFrame(data=_list_series)
resultDF = add_relativeErrorRateCol(
inputDF=resultDF,
real_colName="real inclusive",
predicted_colName="all to all",
targetColName="vs all to all",
)
resultDF = add_relativeErrorRateCol(
inputDF=resultDF,
real_colName="real inclusive",
predicted_colName="perCall to all",
targetColName="vs perCall to all",
)
print(resultDF.mean())
resultDF
# "vs all to all" より "vs perCall to all" のほうが精度がMAPEベースで良いことを確認
all to all 3.853701e+02 perCall to all 2.939183e+02 real inclusive 3.516647e+02 real call 6.717865e+07 vs all to all 1.170237e+02 vs perCall to all 5.267761e+01 dtype: float64
/tmp/ipykernel_121/4237747298.py:123: FutureWarning: The default value of numeric_only in DataFrame.mean is deprecated. In a future version, it will default to False. In addition, specifying 'numeric_only=None' is deprecated. Select only valid columns or specify the value of numeric_only to silence this warning.
| Name | all to all | perCall to all | real inclusive | real call | vs all to all | vs perCall to all | |
|---|---|---|---|---|---|---|---|
| 0 | .TAU_application | 4112.13002651492 | 3755.07819771439 | 4.651960e+03 | 1.000000e+00 | 11.6043617773413 | 19.2796600003743 |
| 1 | MPI_Allreduce() | 439.345968776950 | 179.465101548773 | 5.133010e+02 | 1.023000e+03 | 14.4077317642182 | 65.0370637211358 |
| 2 | MPI_Barrier() | 0.000869176944444444 | 0.0279258262284882 | 3.833333e-02 | 1.000000e+00 | 97.7325818840580 | 27.1500185343787 |
| 3 | MPI_Comm_rank() | 0.0165754414998621 | 0.00691026689926807 | 9.000000e-03 | 9.221000e+03 | 84.1715722206905 | 23.2192566747993 |
| 4 | MPI_Comm_size() | 4.85952941689757e-7 | 4.96437818799606e-7 | 4.553333e-07 | 1.000000e+00 | 6.72465776495400 | 9.02733941426189 |
| 5 | MPI_Finalize() | 0.501003301920031 | 3.99012618543521 | 7.433333e-01 | 1.000000e+00 | 32.6004526564981 | 436.788276067517 |
| 6 | MPI_Init() | 0.503405555555556 | 0.495375000000000 | 6.153333e-01 | 1.000000e+00 | 18.1897797038642 | 19.4948537378115 |
| 7 | MPI_Irecv() | 0.0635597911803491 | 0.0641030960977833 | 8.066667e-02 | 3.773280e+04 | 21.2068704375837 | 20.5333519448967 |
| 8 | MPI_Isend() | 0.426386241911113 | 1.14257579197692 | 8.950000e-01 | 3.773280e+04 | 52.3590791160767 | 27.6620996622256 |
| 9 | MPI_Reduce() | 0.0600932981444429 | 0.0478019236476088 | 7.166667e-02 | 1.000000e+00 | 16.1488863100797 | 33.2996414219412 |
| 10 | MPI_Wait() | 72.0485507261410 | 61.3435829940378 | 4.289367e+01 | 3.773280e+04 | 67.9701371441183 | 43.0131480032898 |
| 11 | MPI_Waitall() | 2087.96064418750 | 247.646034581573 | 1.180570e+02 | 3.073000e+03 | 1668.60384745292 | 109.768192128864 |
| 12 | Real_t_CalcElemVolume(const | 337.081473253762 | 310.960204792449 | 3.164563e+02 | 2.149580e+09 | 6.51753109289281 | 1.73677312221611 |
| 13 | StrToInt | 1.91816666666667e-6 | 1.89625000000000e-6 | 2.020000e-06 | 2.000000e+00 | 5.04125412541255 | 6.12623762376250 |
| 14 | int_main(int_char_**) | 4112.13124454251 | 3755.07819771439 | 4.651960e+03 | 1.000000e+00 | 11.6043355942377 | 19.2796600003743 |
| 15 | void_CalcKinematicsForElems(Domain | 748.661450811180 | 763.966273880916 | 7.690063e+02 | 1.024000e+03 | 2.64560662770699 | 0.655398952381933 |
| 16 | void_CommMonoQ(Domain | 58.6305977858969 | 0.437668426666667 | 5.460667e+00 | 1.024000e+03 | 973.689374665429 | 91.9850733732145 |
| 17 | void_CommRecv(Domain | 0.0979398580451694 | 0.0838619530358588 | 9.966667e-02 | 3.073000e+03 | 1.73258390116784 | 15.8575722048239 |
| 18 | void_CommSBN(Domain | 0.590025671762993 | 0.718211354260315 | 2.321700e+01 | 1.025000e+03 | 97.4586480950898 | 96.9065281722000 |
| 19 | void_CommSend(Domain | 319.835497015011 | 276.658392471159 | 1.274573e+02 | 3.073000e+03 | 150.935343342356 | 117.059611429047 |
| 20 | void_CommSyncPosVel(Domain | 40.4090521433832 | 46.6280102726962 | 2.990133e+01 | 1.024000e+03 | 35.1413052150957 | 55.9395688242316 |
| 21 | void_Domain::BuildMesh(Int_t_Int_t_Int_t) | 0.0102553923824921 | 0.00878725560241810 | 5.866667e-02 | 1.000000e+00 | 82.5192175298429 | 85.0217234049691 |
| 22 | void_Domain::CreateRegionIndexSets(Int_t_Int_t) | 0.00763415378183217 | 0.00754524639183196 | 2.166667e-02 | 1.000000e+00 | 64.7654440838515 | 65.1757858838525 |
| 23 | void_Domain::Domain(Int_t_Index_t_Index_t_Inde... | 1.30391133111838 | 1.50320613493525 | 9.360000e-01 | 1.000000e+00 | 39.3067661451264 | 60.5989460400911 |
| 24 | void_Domain::SetupBoundaryConditions(Int_t) | 0.00485935192872183 | 0.00462411456065167 | 7.000000e-03 | 1.000000e+00 | 30.5806867325452 | 33.9412205621190 |
| 25 | void_Domain::SetupCommBuffers(Int_t) | 0.00504001017854632 | 0.00497909186700407 | 4.000000e-03 | 1.000000e+00 | 26.0002544636580 | 24.4772966751018 |
| 26 | void_Domain::SetupElementConnectivities(Int_t) | 0.0171686507686722 | 0.0170655822920854 | 1.866667e-02 | 1.000000e+00 | 8.02508516782757 | 8.57723772097084 |
| 27 | void_Domain::SetupSymmetryPlanes(Int_t) | 3.88307804958058e-5 | 3.84669401096583e-5 | 2.836667e-05 | 1.000000e+00 | 36.8887679053082 | 35.6061343466214 |
| 28 | void_Domain::~Domain() | 0.000432445444444444 | 0.000425474400000000 | 1.000000e-03 | 1.000000e+00 | 56.7554555555556 | 57.4525600000000 |
| 29 | void_InitMeshDecomp(Int_t_Int_t_Int_t | 1.12770555555556e-5 | 1.12723333333333e-5 | 1.226667e-05 | 1.000000e+00 | 8.06748188405792 | 8.10597826086959 |
| 30 | void_ParseCommandLineOptions(int_char_**_Int_t... | 3.94702777777778e-6 | 4.83787130376345e-6 | 3.593333e-06 | 1.000000e+00 | 9.84307359307357 | 34.6346373960143 |
| 31 | void_VerifyAndWriteFinalOutput(Real_t_Domain | 1.36824327345807e-7 | 8.78196087913656e-8 | 1.296667e-07 | 1.000000e-03 | 5.52004679625255 | 32.2727952765818 |
resultDF_better_than_all_to_all: pd.DataFrame = resultDF[
resultDF["vs all to all"] > resultDF["vs perCall to all"]
]
resultDF_better_than_all_to_all
| Name | all to all | perCall to all | real inclusive | real call | vs all to all | vs perCall to all | |
|---|---|---|---|---|---|---|---|
| 2 | MPI_Barrier() | 0.000869176944444444 | 0.0279258262284882 | 0.038333 | 1.000000e+00 | 97.7325818840580 | 27.1500185343787 |
| 3 | MPI_Comm_rank() | 0.0165754414998621 | 0.00691026689926807 | 0.009000 | 9.221000e+03 | 84.1715722206905 | 23.2192566747993 |
| 7 | MPI_Irecv() | 0.0635597911803491 | 0.0641030960977833 | 0.080667 | 3.773280e+04 | 21.2068704375837 | 20.5333519448967 |
| 8 | MPI_Isend() | 0.426386241911113 | 1.14257579197692 | 0.895000 | 3.773280e+04 | 52.3590791160767 | 27.6620996622256 |
| 10 | MPI_Wait() | 72.0485507261410 | 61.3435829940378 | 42.893667 | 3.773280e+04 | 67.9701371441183 | 43.0131480032898 |
| 11 | MPI_Waitall() | 2087.96064418750 | 247.646034581573 | 118.057000 | 3.073000e+03 | 1668.60384745292 | 109.768192128864 |
| 12 | Real_t_CalcElemVolume(const | 337.081473253762 | 310.960204792449 | 316.456333 | 2.149580e+09 | 6.51753109289281 | 1.73677312221611 |
| 15 | void_CalcKinematicsForElems(Domain | 748.661450811180 | 763.966273880916 | 769.006333 | 1.024000e+03 | 2.64560662770699 | 0.655398952381933 |
| 16 | void_CommMonoQ(Domain | 58.6305977858969 | 0.437668426666667 | 5.460667 | 1.024000e+03 | 973.689374665429 | 91.9850733732145 |
| 18 | void_CommSBN(Domain | 0.590025671762993 | 0.718211354260315 | 23.217000 | 1.025000e+03 | 97.4586480950898 | 96.9065281722000 |
| 19 | void_CommSend(Domain | 319.835497015011 | 276.658392471159 | 127.457333 | 3.073000e+03 | 150.935343342356 | 117.059611429047 |
| 25 | void_Domain::SetupCommBuffers(Int_t) | 0.00504001017854632 | 0.00497909186700407 | 0.004000 | 1.000000e+00 | 26.0002544636580 | 24.4772966751018 |
| 27 | void_Domain::SetupSymmetryPlanes(Int_t) | 3.88307804958058e-5 | 3.84669401096583e-5 | 0.000028 | 1.000000e+00 | 36.8887679053082 | 35.6061343466214 |
floatWeightedMAPE_all: float = calcWeightedMAPEscore(
inputDF=resultDF,
inputColumnDict={
"funcName": "Name",
"call": "real call",
"MAPE": "vs all to all",
},
)
floatWeightedMAPE_perCall: float = calcWeightedMAPEscore(
inputDF=resultDF,
inputColumnDict={
"funcName": "Name",
"call": "real call",
"MAPE": "vs perCall to all",
},
)
pd.Series(
{
"weighted all to all": floatWeightedMAPE_all,
"weighted perCall to all": floatWeightedMAPE_perCall,
}
)
weighted all to all 6.52310064960460 weighted perCall to all 1.73885845725729 dtype: object
# HPCA2022と同様のグラフをExtra-Pを用いて作成
# 予測対象をループ
# 各予測対象に対して予測
# 総実行時間を予測
# 表にする
resVar_call = "#Call"
for elem_process in test_lulesh_processes:
for elem_iteration in test_lulesh_iterations:
for elem_size in test_lulesh_sizes:
pass
print(
f"elem_process={elem_process}, elem_iteration={elem_iteration}, elem_size={elem_size}"
)
resVar_all = "Exclusive"
resVar_perCall = f"{resVar_all}PerCall"
resVar_all = "Inclusive"
resVar_perCall = f"{resVar_all}PerCall"
elem_process=1000, elem_iteration=1024, elem_size=128
%reset -f
# jupyter_pwd = %pwd
# if jupyter_pwd == "/":
# %cd /workspace
# ipynb形式のライブラリのインポート
%run ./lib/lib.ipynb
# 生データの入ったCSVファイルの保持されたディレクトリ名を格納している変数
csvDirPath = "./csv_files/"
# NPBのベンチマーク名のリスト
benchmarkNames = ["cg", "ep", "ft", "is", "lu", "mg"]
# LULESH ベンチマークプログラムのプロセス数・問題サイズ・イテレーション数
lulesh_processes: list[int] = [8, 27, 64, 125, 216, 343, 512]
lulesh_iterations: list[int] = [8, 16, 32, 64, 128, 256]
lulesh_sizes: list[int] = [16, 24, 32, 48, 64, 128]
# ipynb形式のライブラリノートを.py形式に変更したものをインポート
import lib
import lib.lab_lib
from lib.lab_lib import *
train_lulesh_processes: list[int] = [8, 27, 64, 125, 216, 343]
train_lulesh_iterations: list[int] = [8, 16, 32, 64, 128]
train_lulesh_sizes: list[int] = [16, 24, 32, 48]
test_lulesh_processes: list[int] = [512, 729, 1000]
test_lulesh_iterations: list[int] = [256, 512, 1024]
test_lulesh_sizes: list[int] = [64, 96, 128]
list_modelName: list[str] = [
"modelIp",
"modelLog",
"modelLinAndIp",
"modelLinAndLog",
"modelIpAndLin",
"modelIpAndLog",
"modelLogAndLin",
"modelLogAndIp",
"modelProcessDividedByProblemSize",
"modelProblemSizeDividedByProcess",
"modelInfiniteProductOfProblemSizeMultipliedByProcesses",
"modelInfiniteProductOfProblemSizeDividedByProcesses",
"modelLinearSumOf2elementCombination",
"modelLinearSumOfElementCombinations",
"modelLinearSumOf2elementCombinationWithSquared",
"modelLinearSumOf2elementCombinationWithCubed",
"modelSquareRootOfProcess",
"modelSquareRootTimesOtherElems",
"modelObeyOneParameter",
"modelLin"
# "modelBasicTree",
]
# ipynb形式のライブラリのインポート
%run ./lib/lib.ipynb
# ipynb形式のライブラリノートを.py形式に変更したものをインポート
import lib
import lib.lab_lib
from lib.lab_lib import *
# 生データの入ったCSVファイルの保持されたディレクトリ名を格納している変数
csvDirPath = "./csv_files/"
# NPBのベンチマーク名のリスト
benchmarkNames = ["cg", "ep", "ft", "is", "lu", "mg"]
# NPBのプロセス数
npb_process: list[int] = [2, 4, 8, 16, 32, 64, 128, 256]
train_npb_process: list[int] = npb_process[:-1]
test_npb_process: list[int] = npb_process[-1:]
# NPBのCGの初期変数
cg_na: list[int] = [14000, 30000, 75000, 100000, 1500000]
cg_nonzer: list[int] = [11, 12, 13, 14, 15, 18, 21]
cg_niter: list[int] = [15, 30, 75, 90, 100]
cg_shift: list[int] = [20, 40, 60, 80, 110, 200]
train_cg_na: list[int] = cg_na[:-1]
train_cg_nonzer: list[int] = cg_nonzer[:-1]
train_cg_niter: list[int] = cg_niter[:-1]
train_cg_shift: list[int] = cg_shift[:-1]
test_cg_na: list[int] = cg_na[-1:]
test_cg_nonzer: list[int] = cg_nonzer[-1:]
test_cg_niter: list[int] = cg_niter[-1:]
test_cg_shift: list[int] = cg_shift[-1:]
# LULESH ベンチマークプログラムのプロセス数・問題サイズ・イテレーション数
lulesh_processes: list[int] = [8, 27, 64, 125, 216, 343, 512]
lulesh_iterations: list[int] = [8, 16, 32, 64, 128, 256]
lulesh_sizes: list[int] = [16, 24, 32, 48, 64, 128]
train_lulesh_processes: list[int] = [8, 27, 64, 125, 216, 343]
train_lulesh_iterations: list[int] = [8, 16, 32, 64, 128]
train_lulesh_sizes: list[int] = [16, 24, 32, 48]
test_lulesh_processes: list[int] = [512, 729, 1000]
test_lulesh_iterations: list[int] = [256, 512, 1024]
test_lulesh_sizes: list[int] = [64, 96, 128]
# Extra-Pのオプション
modelerNames: list[str] = [
# "refining",
"multi-parameter",
"default",
# "basic --options poly_exponents=-1,0,1,2,3 log_exponents=0,1 force_combination_exponents=1 allow_negative_exponents=1"
]
modelerOption: str = """ --options \#spm=Basic \#spo=poly_exponents=-1,0,1,2,3,log_exponents=0,1,force_combination_exponents=1,allow_negative_exponents=True"""
list_modelName: list[str] = [
"modelIp",
"modelLog",
"modelLinAndIp",
"modelLinAndLog",
"modelIpAndLin",
"modelIpAndLog",
"modelLogAndLin",
"modelLogAndIp",
"modelProcessDividedByProblemSize",
"modelProblemSizeDividedByProcess",
"modelInfiniteProductOfProblemSizeMultipliedByProcesses",
"modelInfiniteProductOfProblemSizeDividedByProcesses",
"modelLinearSumOf2elementCombination",
"modelLinearSumOfElementCombinations",
"modelLinearSumOf2elementCombinationWithSquared",
"modelLinearSumOf2elementCombinationWithCubed",
"modelSquareRootOfProcess",
"modelSquareRootTimesOtherElems",
"modelObeyOneParameter",
"modelLin"
# "modelBasicTree",
]
list_csvDir = [
"./csv_files/lulesh_1st/",
"./csv_files/lulesh_2nd/",
"./csv_files/lulesh_3rd/",
]
DEBUG:__main__:hello DEBUG:__main__:hello
# モデル構築関数
def returnModelByExtraP(
input_benchmarkName: str,
input_expVar: list[str],
input_resVar: str,
input_trainDF: pd.DataFrame,
input_testDF: pd.DataFrame,
input_dict_symbols: dict[str, any],
input_modelerName: str,
input_modelerOption: str,
):
functionNames: list[str] = sorted(list(set(input_trainDF["Name"])))
resDict: dict[str, dict[str, any]] = {}
dict_functionName_model_all: dict[str, any] = {}
dict_functionName_model_perCall: dict[str, any] = {}
resVar_all: str = input_resVar
resVar_perCall: str = f"{resVar_all}PerCall"
for functionName in functionNames:
trainDF_perFunc: pd.DataFrame = input_trainDF[
input_trainDF["Name"] == functionName
].reset_index()
model_fromExtraP_all = get_ExtraP_model(
benchmarkName=input_benchmarkName,
inputDF_perFunc=trainDF_perFunc,
expVar=input_expVar,
resVar=resVar_all,
functionName=functionName,
modelerName=input_modelerName,
modelerOption=input_modelerOption,
dict_symbols=input_dict_symbols,
)
dict_functionName_model_all[functionName] = model_fromExtraP_all
model_fromExtraP_perCall = get_ExtraP_model(
benchmarkName=input_benchmarkName,
inputDF_perFunc=trainDF_perFunc,
expVar=input_expVar,
resVar=resVar_perCall,
functionName=functionName,
modelerName=input_modelerName,
modelerOption=input_modelerOption,
dict_symbols=input_dict_symbols,
)
dict_functionName_model_perCall[functionName] = model_fromExtraP_perCall
resDict["all"] = dict_functionName_model_all
resDict["perCall"] = dict_functionName_model_perCall
return resDict
# モデル構築
expVar: list[str] = ["process", "iteration", "size"]
resVar_ex: str = "Exclusive"
resVar_in: str = "Inclusive"
benchmarkName = "lulesh"
trainDF_lulesh_in: pd.DataFrame = ret_averaged_rawDF_lulesh(
list_process=train_lulesh_processes,
list_iteration=train_lulesh_iterations,
list_size=train_lulesh_sizes,
list_csvDir=list_csvDir,
resVar=resVar_in,
)
testDF_lulesh_in: pd.DataFrame = ret_averaged_rawDF_lulesh(
list_process=test_lulesh_processes,
list_iteration=test_lulesh_iterations,
list_size=test_lulesh_sizes,
list_csvDir=list_csvDir,
resVar=resVar_in,
)
trainDF_lulesh_in = trainDF_lulesh_in.reset_index()
testDF_lulesh_in = testDF_lulesh_in.reset_index()
trainDF_lulesh_ex: pd.DataFrame = ret_averaged_rawDF_lulesh(
list_process=train_lulesh_processes,
list_iteration=train_lulesh_iterations,
list_size=train_lulesh_sizes,
list_csvDir=list_csvDir,
resVar=resVar_ex,
)
testDF_lulesh_ex: pd.DataFrame = ret_averaged_rawDF_lulesh(
list_process=test_lulesh_processes,
list_iteration=test_lulesh_iterations,
list_size=test_lulesh_sizes,
list_csvDir=list_csvDir,
resVar=resVar_ex,
)
trainDF_lulesh_ex = trainDF_lulesh_ex.reset_index()
testDF_lulesh_ex = testDF_lulesh_ex.reset_index()
functionNames_lulesh: list[str] = sorted(list(set(trainDF_lulesh_in["Name"])))
dict_symbols_lulesh = {}
for elem in expVar:
dict_symbols_lulesh[elem] = symbols(elem, real=True)
target_env = [
(dict_symbols_lulesh["size"], test_lulesh_sizes[-1]),
(dict_symbols_lulesh["iteration"], test_lulesh_iterations[-1]),
(dict_symbols_lulesh["process"], test_lulesh_processes[-1]),
]
modelerName: str = "multi-parameter"
resVar_call: str = "#Call"
models_dict_ex: dict[str, any] = returnModelByExtraP(
input_benchmarkName=benchmarkName,
input_expVar=expVar,
input_resVar=resVar_ex,
input_trainDF=trainDF_lulesh_ex,
input_testDF=testDF_lulesh_ex,
input_dict_symbols=dict_symbols_lulesh,
input_modelerName=modelerName,
input_modelerOption=modelerOption,
)
models_dict_in: dict[str, any] = returnModelByExtraP(
input_benchmarkName=benchmarkName,
input_expVar=expVar,
input_resVar=resVar_in,
input_trainDF=trainDF_lulesh_in,
input_testDF=testDF_lulesh_in,
input_dict_symbols=dict_symbols_lulesh,
input_modelerName=modelerName,
input_modelerOption=modelerOption,
)
# コール回数のモデルを作成
resVar_call: str = f"#Call"
dict_functionName_model_call: dict[str, any] = {}
trainDF_lulesh_call: pd.DataFrame = ret_averaged_rawDF_lulesh(
list_process=train_lulesh_processes,
list_iteration=train_lulesh_iterations,
list_size=train_lulesh_sizes,
list_csvDir=list_csvDir,
resVar=resVar_call,
)
testDF_lulesh_call: pd.DataFrame = ret_averaged_rawDF_lulesh(
list_process=test_lulesh_processes,
list_iteration=test_lulesh_iterations,
list_size=test_lulesh_sizes,
list_csvDir=list_csvDir,
resVar=resVar_call,
)
functionNames_lulesh: list[str] = sorted(list(set(trainDF_lulesh_call["Name"])))
for functionName in functionNames_lulesh:
trainDF_perFunc: pd.DataFrame = trainDF_lulesh_call[
trainDF_lulesh_call["Name"] == functionName
].reset_index()
model_fromExtraP_call = get_ExtraP_model(
benchmarkName="lulesh",
inputDF_perFunc=trainDF_perFunc,
expVar=expVar,
resVar=resVar_call,
functionName=functionName,
modelerName=modelerName,
modelerOption=modelerOption,
dict_symbols=dict_symbols_lulesh,
)
dict_functionName_model_call[functionName] = model_fromExtraP_call
# TODO
# テスト環境をループ
# meanでそれぞれの環境のデータを集計
_list_series_whole: list[pd.DataFrame] = []
for elem_process in test_lulesh_processes:
for elem_iteration in test_lulesh_iterations:
# コール回数の予測値を算出
for elem_size in test_lulesh_sizes:
resultDF_oneCase_ex: pd.DataFrame
resultDF_oneCase_in: pd.DataFrame
_list_series_perFuncs: list[pd.Series] = []
for functionName in functionNames_lulesh:
testDF_perFunc: pd.DataFrame = testDF_lulesh_call[
(testDF_lulesh_call["process"] == elem_process)
& (testDF_lulesh_call["iteration"] == elem_iteration)
& (testDF_lulesh_call["size"] == elem_size)
& (testDF_lulesh_call["Name"] == functionName)
].reset_index()
testDF_perFunc_ex: pd.DataFrame = testDF_lulesh_ex[
(testDF_lulesh_ex["process"] == elem_process)
& (testDF_lulesh_ex["iteration"] == elem_iteration)
& (testDF_lulesh_ex["size"] == elem_size)
& (testDF_lulesh_ex["Name"] == functionName)
].reset_index()
testDF_perFunc_in: pd.DataFrame = testDF_lulesh_ex[
(testDF_lulesh_in["process"] == elem_process)
& (testDF_lulesh_in["iteration"] == elem_iteration)
& (testDF_lulesh_in["size"] == elem_size)
& (testDF_lulesh_in["Name"] == functionName)
].reset_index()
# 予測値の算出
target_env_oneCase = [
(dict_symbols_lulesh["size"], elem_size),
(dict_symbols_lulesh["iteration"], elem_iteration),
(dict_symbols_lulesh["process"], elem_process),
]
# _all
_all_ex: float = (
models_dict_ex["all"][functionName].subs(target_env_oneCase).evalf()
)
_all_in: float = (
models_dict_in["all"][functionName].subs(target_env_oneCase).evalf()
)
# _perCall
_perCall_ex: float = (
models_dict_ex["perCall"][functionName]
.subs(target_env_oneCase)
.evalf()
)
_perCall_in: float = (
models_dict_in["perCall"][functionName]
.subs(target_env_oneCase)
.evalf()
)
# _call
_call: float = (
dict_functionName_model_call[functionName]
.subs(target_env_oneCase)
.evalf()
)
# 実測値の算出
_real_ex: float = convertPprofTime(testDF_perFunc_ex.loc[0][resVar_ex])
_real_in: float = convertPprofTime(testDF_perFunc_in.loc[0][resVar_in])
_tmp_series: pd.Series = pd.Series(
{
"Name": functionName,
"process": elem_process,
"iteration": elem_iteration,
"size": elem_size,
"ex_directly": _all_ex,
"ex_indirectly": _perCall_ex * _call,
"ex_real": _real_ex,
"in_directly": _all_in,
"in_indirectly": _perCall_in * _call,
"in_real": _real_in,
}
)
_list_series_perFuncs.append(_tmp_series)
_tmp_DF: pd.DataFrame = pd.DataFrame(data=_list_series_perFuncs)
_tmp_DF = _tmp_DF.astype(
{
"ex_directly": float,
"ex_indirectly": float,
"ex_real": float,
"in_directly": float,
"in_indirectly": float,
"in_real": float,
}
)
_tmp_DF = add_relativeErrorRateCol(
inputDF=_tmp_DF,
real_colName="ex_real",
predicted_colName="ex_directly",
targetColName="vs directly(ex)",
)
_tmp_DF = add_relativeErrorRateCol(
inputDF=_tmp_DF,
real_colName="ex_real",
predicted_colName="ex_indirectly",
targetColName="vs indirectly(ex)",
)
_tmp_DF = add_relativeErrorRateCol(
inputDF=_tmp_DF,
real_colName="in_real",
predicted_colName="in_directly",
targetColName="vs directly(in)",
)
_tmp_DF = add_relativeErrorRateCol(
inputDF=_tmp_DF,
real_colName="in_real",
predicted_colName="in_indirectly",
targetColName="vs indirectly(in)",
)
_list_series_whole.append(_tmp_DF.mean(numeric_only=True))
resultDF_whole: pd.DataFrame = pd.DataFrame(data=_list_series_whole)
resultDF_whole
| process | iteration | size | ex_directly | ex_indirectly | ex_real | in_directly | in_indirectly | in_real | vs directly(ex) | vs indirectly(ex) | vs directly(in) | vs indirectly(in) | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 512.0 | 256.0 | 64.0 | 3.919365 | 2139.335882 | 0.004130 | 10.611352 | 2175.449380 | 10.992604 | 93979.761771 | 3.751343e+08 | 36.387339 | 3.916221e+05 |
| 1 | 512.0 | 256.0 | 96.0 | 13.114372 | 3091.049492 | 0.014749 | 35.476425 | 3210.695513 | 36.435679 | 105205.476405 | 3.755681e+08 | 36.138631 | 3.789619e+05 |
| 2 | 512.0 | 256.0 | 128.0 | 31.020158 | 7377.355767 | 0.035744 | 83.877708 | 7659.679401 | 86.002127 | 122737.065763 | 3.303384e+08 | 51.632062 | 3.335468e+05 |
| 3 | 512.0 | 512.0 | 64.0 | 8.713426 | 3021.576285 | 0.008229 | 22.158231 | 3063.077281 | 21.919510 | 98020.774826 | 7.383209e+08 | 48.655122 | 6.237561e+05 |
| 4 | 512.0 | 512.0 | 96.0 | 29.254974 | 3979.826069 | 0.029867 | 74.314599 | 4117.290867 | 73.445335 | 112980.340539 | 5.496842e+08 | 51.899945 | 5.561032e+05 |
| 5 | 512.0 | 512.0 | 128.0 | 69.256516 | 8278.840379 | 0.071755 | 175.803029 | 8603.205054 | 173.864502 | 132259.555147 | 4.599156e+08 | 67.481513 | 4.309283e+05 |
| 6 | 512.0 | 1024.0 | 64.0 | 21.126702 | 4787.093086 | 0.016753 | 48.476630 | 4839.571319 | 43.521353 | 113433.281710 | 1.029340e+09 | 82.326924 | 1.021138e+06 |
| 7 | 512.0 | 1024.0 | 96.0 | 71.027394 | 5758.445127 | 0.059084 | 162.680963 | 5931.778747 | 146.218147 | 134612.067036 | 8.992812e+08 | 85.971068 | 8.986858e+05 |
| 8 | 512.0 | 1024.0 | 128.0 | 168.201720 | 10082.918573 | 0.143088 | 384.764061 | 10491.668301 | 344.232345 | 161279.290058 | 7.229306e+08 | 125.868647 | 7.224352e+05 |
| 9 | 729.0 | 256.0 | 64.0 | 3.919446 | 2117.714431 | 0.004471 | 10.619841 | 2153.829292 | 12.029603 | 89619.425074 | 3.720000e+08 | 36.863718 | 3.584134e+05 |
| 10 | 729.0 | 256.0 | 96.0 | 13.114453 | 3069.805048 | 0.014865 | 35.512586 | 3189.446788 | 36.792241 | 107839.480365 | 3.634820e+08 | 36.552259 | 3.746648e+05 |
| 11 | 729.0 | 256.0 | 128.0 | 31.020239 | 7356.841885 | 0.035716 | 83.967756 | 7639.153858 | 85.778220 | 119060.689391 | 3.171997e+08 | 58.581361 | 2.486982e+05 |
| 12 | 729.0 | 512.0 | 64.0 | 8.713507 | 3000.162207 | 0.008632 | 22.178372 | 3041.662247 | 22.819948 | 94113.593737 | 6.881474e+08 | 49.062660 | 6.398648e+05 |
| 13 | 729.0 | 512.0 | 96.0 | 29.255055 | 3959.201028 | 0.030058 | 74.390083 | 4096.648465 | 74.001554 | 107760.099818 | 4.966006e+08 | 54.511308 | 5.209588e+05 |
| 14 | 729.0 | 512.0 | 128.0 | 69.256597 | 8259.742252 | 0.071568 | 175.986288 | 8584.067250 | 170.873377 | 130377.047379 | 4.473117e+08 | 86.558061 | 4.347063e+05 |
| 15 | 729.0 | 1024.0 | 64.0 | 21.126783 | 4766.147990 | 0.016883 | 48.520073 | 4818.609902 | 45.182072 | 105824.610378 | 9.445332e+08 | 80.067664 | 9.269374e+05 |
| 16 | 729.0 | 1024.0 | 96.0 | 71.027475 | 5739.126709 | 0.060051 | 162.835093 | 5912.392497 | 148.806241 | 127325.061784 | 9.104156e+08 | 84.046033 | 9.057178e+05 |
| 17 | 729.0 | 1024.0 | 128.0 | 168.201801 | 10066.738985 | 0.143849 | 385.133740 | 10475.349482 | 344.477595 | 153577.675990 | 7.180802e+08 | 127.620555 | 7.121108e+05 |
| 18 | 1000.0 | 256.0 | 64.0 | 3.920205 | 2103.997804 | 0.004378 | 10.625269 | 2140.114192 | 12.208729 | 93100.388182 | 3.790373e+08 | 37.678360 | 3.875684e+05 |
| 19 | 1000.0 | 256.0 | 96.0 | 13.115211 | 3056.557325 | 0.015337 | 35.535707 | 3176.192967 | 38.435365 | 99740.296519 | 3.528847e+08 | 36.504454 | 2.697375e+05 |
| 20 | 1000.0 | 256.0 | 128.0 | 31.020998 | 7344.502784 | 0.036279 | 84.025333 | 7626.798315 | 87.961251 | 120896.697987 | 3.047861e+08 | 49.619193 | 3.042226e+05 |
| 21 | 1000.0 | 512.0 | 64.0 | 8.714266 | 2986.704635 | 0.008668 | 22.191250 | 3028.203227 | 24.303010 | 97909.120006 | 6.713427e+08 | 48.077980 | 6.148098e+05 |
| 22 | 1000.0 | 512.0 | 96.0 | 29.255814 | 3946.727065 | 0.030878 | 74.438348 | 4084.151843 | 76.918241 | 109081.277336 | 5.353949e+08 | 48.623166 | 5.490928e+05 |
| 23 | 1000.0 | 512.0 | 128.0 | 69.257356 | 8249.171712 | 0.072380 | 176.103465 | 8573.444772 | 173.974095 | 131365.308350 | 4.772688e+08 | 73.711210 | 4.433902e+05 |
| 24 | 1000.0 | 1024.0 | 64.0 | 21.127541 | 4753.276169 | 0.017586 | 48.547850 | 4805.717376 | 48.154416 | 108716.348388 | 1.023768e+09 | 76.088929 | 1.017975e+06 |
| 25 | 1000.0 | 1024.0 | 96.0 | 71.028233 | 5728.284651 | 0.060735 | 162.933646 | 5901.464608 | 149.567366 | 127912.972318 | 8.655995e+08 | 81.033593 | 8.637324e+05 |
| 26 | 1000.0 | 1024.0 | 128.0 | 168.202560 | 10059.813518 | 0.145373 | 385.370116 | 10468.247466 | 351.376095 | 154140.943753 | 6.691295e+08 | 114.951054 | 7.131300e+05 |
_tmp_DF
| Name | process | iteration | size | ex_directly | ex_indirectly | ex_real | in_directly | in_indirectly | in_real | vs directly(ex) | vs indirectly(ex) | vs directly(in) | vs indirectly(in) | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | .TAU_application | 1000 | 1024 | 128 | 3.587083e-06 | 2.105709e-06 | 3.366667e-09 | 4.112130e+03 | 3.755078e+03 | 4.647539e+03 | 1.064470e+05 | 6.244581e+04 | 11.520269 | 1.920287e+01 |
| 1 | MPI_Allreduce() | 1000 | 1024 | 128 | 4.379160e+02 | 1.212476e+04 | 5.133010e-01 | 4.393460e+02 | 1.212476e+04 | 5.031910e+02 | 8.521368e+04 | 2.362014e+06 | 12.688031 | 2.309573e+03 |
| 2 | MPI_Barrier() | 1000 | 1024 | 128 | 8.163306e-04 | 1.850046e+01 | 3.833333e-05 | 8.691769e-04 | 1.850046e+01 | 2.200000e-02 | 2.029558e+03 | 4.826196e+07 | 96.049196 | 8.399298e+04 |
| 3 | MPI_Comm_rank() | 1000 | 1024 | 128 | 1.657494e-02 | 5.757170e-03 | 9.000000e-06 | 1.657544e-02 | 5.757170e-03 | 9.000000e-03 | 1.840660e+05 | 6.386856e+04 | 84.171572 | 3.603144e+01 |
| 4 | MPI_Comm_size() | 1000 | 1024 | 128 | 4.859529e-07 | 4.909538e-07 | 4.553333e-10 | 4.859529e-07 | 4.909538e-07 | 4.580000e-07 | 1.066247e+05 | 1.077229e+05 | 6.103262 | 7.195145e+00 |
| 5 | MPI_Finalize() | 1000 | 1024 | 128 | 4.884601e-01 | 1.307745e+05 | 7.433333e-04 | 5.010033e-01 | 1.307745e+05 | 6.880000e-01 | 6.561212e+04 | 1.759299e+10 | 27.179753 | 1.900783e+07 |
| 6 | MPI_Init() | 1000 | 1024 | 128 | 4.930194e-01 | 1.507272e+04 | 6.153333e-04 | 5.034056e-01 | 1.507272e+04 | 6.250000e-01 | 8.002234e+04 | 2.449521e+09 | 19.455111 | 2.411535e+06 |
| 7 | MPI_Irecv() | 1000 | 1024 | 128 | 6.071899e-02 | -8.960680e-02 | 5.633333e-05 | 6.355979e-02 | -8.960680e-02 | 7.500000e-02 | 1.076852e+05 | 1.591653e+05 | 15.253612 | 2.194757e+02 |
| 8 | MPI_Isend() | 1000 | 1024 | 128 | 3.174987e+00 | 1.111102e+00 | 8.950000e-04 | 4.263862e-01 | 1.111102e+00 | 8.900000e-01 | 3.546471e+05 | 1.240455e+05 | 52.091433 | 2.484295e+01 |
| 9 | MPI_Reduce() | 1000 | 1024 | 128 | 5.818206e-02 | 7.866580e+02 | 7.166667e-05 | 6.009330e-02 | 7.866580e+02 | 7.100000e-02 | 8.108427e+04 | 1.097662e+09 | 15.361552 | 1.107869e+06 |
| 10 | MPI_Wait() | 1000 | 1024 | 128 | 7.150075e+01 | 1.164307e+01 | 4.289367e-02 | 7.204855e+01 | 1.164307e+01 | 4.386800e+01 | 1.665930e+05 | 2.704403e+04 | 64.239424 | 7.345886e+01 |
| 11 | MPI_Waitall() | 1000 | 1024 | 128 | 1.919569e+03 | 1.592230e+05 | 1.180570e-01 | 2.087961e+03 | 1.592230e+05 | 1.217270e+02 | 1.625868e+06 | 1.348695e+08 | 1615.281445 | 1.307034e+05 |
| 12 | Real_t_CalcElemVolume(const | 1000 | 1024 | 128 | 3.353785e+02 | 2.937287e+02 | 3.164563e-01 | 3.370815e+02 | 2.937287e+02 | 3.166190e+02 | 1.058794e+05 | 9.271810e+04 | 6.462806 | 7.229590e+00 |
| 13 | StrToInt | 1000 | 1024 | 128 | 1.918167e-06 | 2.178581e-06 | 2.020000e-09 | 1.918167e-06 | 2.178581e-06 | 2.000000e-06 | 9.485875e+04 | 1.077505e+05 | 4.091667 | 8.929028e+00 |
| 14 | int_main(int_char_**) | 1000 | 1024 | 128 | 2.135894e+03 | 2.103485e+03 | 3.181085e+00 | 4.112131e+03 | 3.755078e+03 | 4.647539e+03 | 6.704358e+04 | 6.602477e+04 | 11.520242 | 1.920287e+01 |
| 15 | void_CalcKinematicsForElems(Domain | 1000 | 1024 | 128 | 4.454195e+02 | 6.681816e+02 | 4.528560e-01 | 7.486615e+02 | 1.138635e+03 | 7.694730e+02 | 9.825788e+04 | 1.474484e+05 | 2.704650 | 4.797598e+01 |
| 16 | void_CommMonoQ(Domain | 1000 | 1024 | 128 | 5.258543e+00 | 2.516016e+01 | 1.440000e-03 | 5.863060e+01 | 3.765066e+00 | 5.362000e+00 | 3.650766e+05 | 1.747134e+06 | 993.446434 | 2.978243e+01 |
| 17 | void_CommRecv(Domain | 1000 | 1024 | 128 | 1.955217e-03 | -3.676996e-01 | 4.700000e-05 | 9.793986e-02 | 9.577802e-02 | 9.500000e-02 | 4.060035e+03 | 7.824395e+05 | 3.094587 | 8.189667e-01 |
| 18 | void_CommSBN(Domain | 1000 | 1024 | 128 | 1.572116e+00 | 1.703929e+00 | 2.805667e-03 | 5.900257e-01 | 2.565895e-01 | 2.400900e+01 | 5.593361e+04 | 6.063171e+04 | 97.542481 | 9.893128e+01 |
| 19 | void_CommSend(Domain | 1000 | 1024 | 128 | 3.134054e+00 | 4.321765e+02 | 8.500000e-03 | 3.198355e+02 | 7.305781e+03 | 1.310700e+02 | 3.677122e+04 | 5.084330e+06 | 144.018843 | 5.473953e+03 |
| 20 | void_CommSyncPosVel(Domain | 1000 | 1024 | 128 | 2.176785e+01 | 9.083651e+01 | 1.143733e-02 | 4.040905e+01 | 2.745875e+02 | 3.012900e+01 | 1.902228e+05 | 7.941106e+05 | 34.120124 | 8.113728e+02 |
| 21 | void_Domain::BuildMesh(Int_t_Int_t_Int_t) | 1000 | 1024 | 128 | 1.012948e-02 | 3.854139e-01 | 5.866667e-05 | 1.025539e-02 | 3.854139e-01 | 4.600000e-02 | 1.716616e+04 | 6.568556e+05 | 77.705669 | 7.378564e+02 |
| 22 | void_Domain::CreateRegionIndexSets(Int_t_Int_t) | 1000 | 1024 | 128 | 7.220721e-03 | 5.744107e-02 | 2.166667e-05 | 7.634154e-03 | 5.741094e-02 | 2.100000e-02 | 3.322640e+04 | 2.650126e+05 | 63.646887 | 1.733854e+02 |
| 23 | void_Domain::Domain(Int_t_Index_t_Index_t_Inde... | 1000 | 1024 | 128 | 7.318609e-01 | 2.834858e+02 | 5.293333e-04 | 1.303911e+00 | 4.412710e+02 | 9.360000e-01 | 1.381609e+05 | 5.355515e+07 | 39.306766 | 4.704434e+04 |
| 24 | void_Domain::SetupBoundaryConditions(Int_t) | 1000 | 1024 | 128 | 4.859352e-03 | 2.338127e-02 | 7.000000e-06 | 4.859352e-03 | 2.338127e-02 | 7.000000e-03 | 6.931931e+04 | 3.339181e+05 | 30.580687 | 2.340181e+02 |
| 25 | void_Domain::SetupCommBuffers(Int_t) | 1000 | 1024 | 128 | 4.862345e-03 | 9.720498e-02 | 4.000000e-06 | 5.040010e-03 | 9.720498e-02 | 4.000000e-03 | 1.214586e+05 | 2.430025e+06 | 26.000254 | 2.330125e+03 |
| 26 | void_Domain::SetupElementConnectivities(Int_t) | 1000 | 1024 | 128 | 1.719932e-02 | 2.235052e+00 | 1.866667e-05 | 1.716865e-02 | 2.235052e+00 | 1.900000e-02 | 9.203924e+04 | 1.197339e+07 | 9.638680 | 1.166343e+04 |
| 27 | void_Domain::SetupSymmetryPlanes(Int_t) | 1000 | 1024 | 128 | 3.860905e-05 | 3.889435e-05 | 2.836667e-08 | 3.883078e-05 | 3.889435e-05 | 2.820000e-05 | 1.360071e+05 | 1.370129e+05 | 37.697803 | 3.792323e+01 |
| 28 | void_Domain::~Domain() | 1000 | 1024 | 128 | 4.324454e-04 | 7.906917e-04 | 1.000000e-06 | 4.324454e-04 | 7.906917e-04 | 1.000000e-03 | 4.314454e+04 | 7.896917e+04 | 56.755456 | 2.093083e+01 |
| 29 | void_InitMeshDecomp(Int_t_Int_t_Int_t | 1000 | 1024 | 128 | 1.127706e-05 | 1.083020e-05 | 1.226667e-08 | 1.127706e-05 | 1.083020e-05 | 1.220000e-05 | 9.183252e+04 | 8.818964e+04 | 7.565118 | 1.122790e+01 |
| 30 | void_ParseCommandLineOptions(int_char_**_Int_t... | 1000 | 1024 | 128 | 2.085278e-06 | 2.016489e-06 | 1.573333e-09 | 3.947028e-06 | 4.734345e-06 | 3.560000e-06 | 1.324388e+05 | 1.280666e+05 | 10.871567 | 3.298721e+01 |
| 31 | void_VerifyAndWriteFinalOutput(Real_t_Domain | 1000 | 1024 | 128 | 9.571972e-08 | 9.605993e-06 | 1.296667e-10 | 1.368243e-07 | 9.605993e-06 | 1.400000e-07 | 7.371984e+04 | 7.408121e+06 | 2.268338 | 6.761423e+03 |
_tmp_DF.dtypes
Name object process int64 iteration int64 size int64 ex_directly float64 ex_indirectly float64 ex_real float64 in_directly float64 in_indirectly float64 in_real float64 vs directly(ex) float64 vs indirectly(ex) float64 vs directly(in) float64 vs indirectly(in) float64 dtype: object
_tmp_DF.mean()
/tmp/ipykernel_121/1296138598.py:1: FutureWarning: The default value of numeric_only in DataFrame.mean is deprecated. In a future version, it will default to False. In addition, specifying 'numeric_only=None' is deprecated. Select only valid columns or specify the value of numeric_only to silence this warning.
process 1.000000e+03 iteration 1.024000e+03 size 1.280000e+02 ex_directly 1.682026e+02 ex_indirectly 1.005981e+04 ex_real 1.453734e-01 in_directly 3.853701e+02 in_indirectly 1.046825e+04 in_real 3.513761e+02 vs directly(ex) 1.541409e+05 vs indirectly(ex) 6.691295e+08 vs directly(in) 1.149511e+02 vs indirectly(in) 7.131300e+05 dtype: float64
print(f"{test_lulesh_processes[-1:]=}")
print(f"{test_lulesh_iterations[-1:]=}")
print(f"{test_lulesh_sizes[-1:]=}")
test_lulesh_processes[-1:]=[1000] test_lulesh_iterations[-1:]=[1024] test_lulesh_sizes[-1:]=[128]
expVar: list[str] = ["process", "iteration", "size"]
resVar: str = "Inclusive"
trainDF_lulesh: pd.DataFrame = ret_averaged_rawDF_lulesh(
list_process=train_lulesh_processes,
list_iteration=train_lulesh_iterations,
list_size=train_lulesh_sizes,
list_csvDir=list_csvDir,
resVar=resVar,
)
testDF_lulesh: pd.DataFrame = ret_averaged_rawDF_lulesh(
list_process=test_lulesh_processes,
list_iteration=test_lulesh_iterations,
list_size=test_lulesh_sizes,
list_csvDir=list_csvDir,
resVar=resVar,
)
trainDF_lulesh = trainDF_lulesh.reset_index()
testDF_lulesh = testDF_lulesh.reset_index()
functionNames_lulesh: list[str] = sorted(list(set(trainDF_lulesh["Name"])))
dict_symbols_lulesh = {}
for elem in expVar:
dict_symbols_lulesh[elem] = symbols(elem, real=True)
target_env = [
(dict_symbols_lulesh["size"], test_lulesh_sizes[-1]),
(dict_symbols_lulesh["iteration"], test_lulesh_iterations[-1]),
(dict_symbols_lulesh["process"], test_lulesh_processes[-1]),
]
target_env_lulesh = [
(dict_symbols_lulesh["size"], test_lulesh_sizes[-1]),
(dict_symbols_lulesh["iteration"], test_lulesh_iterations[-1]),
(dict_symbols_lulesh["process"], test_lulesh_processes[-1]),
]
modelerName: str = "multi-parameter"
resVar_all: str = "Inclusive"
resVar_perCall: str = "InclusivePerCall"
resVar_call: str = "#Call"
dict_models_lulesh_all = {}
dict_models_lulesh_perCall = {}
dict_models_lulesh_call = {}
# モデル構築
for functionName in functionNames_lulesh:
trainDF_lulesh_perFunc: pd.DataFrame = trainDF_lulesh[
trainDF_lulesh["Name"] == functionName
]
testDF_lulesh_perFUnc: pd.DataFrame = testDF_lulesh[
testDF_lulesh["Name"] == functionName
]
str_ExtraP_model_all: str = get_ExtraP_model(
inputDF_perFunc=trainDF_lulesh_perFunc,
expVar=expVar,
resVar=resVar_all,
functionName=functionName,
benchmarkName="lulesh",
modelerName=modelerName,
modelerOption=modelerOption,
dict_symbols=dict_symbols_lulesh,
)
dict_models_lulesh_all[functionName] = str_ExtraP_model_all
str_ExtraP_model_perCall: str = get_ExtraP_model(
inputDF_perFunc=trainDF_lulesh_perFunc,
expVar=expVar,
resVar=resVar_perCall,
functionName=functionName,
benchmarkName="lulesh",
modelerName=modelerName,
modelerOption=modelerOption,
dict_symbols=dict_symbols_lulesh,
)
dict_models_lulesh_perCall[functionName] = str_ExtraP_model_perCall
str_ExtraP_model_call: str = get_ExtraP_model(
inputDF_perFunc=trainDF_lulesh_perFunc,
expVar=expVar,
resVar=resVar_call,
functionName=functionName,
benchmarkName="lulesh",
modelerName=modelerName,
modelerOption=modelerOption,
dict_symbols=dict_symbols_lulesh,
)
dict_models_lulesh_call[functionName] = str_ExtraP_model_call
_list_series: list[pd.Series] = []
# 予測
for functionName in functionNames_lulesh:
# 全体
_all: float = dict_models_lulesh_all[functionName].subs(target_env_lulesh).evalf()
# 1コール当たり
_perCall: float = (
dict_models_lulesh_perCall[functionName].subs(target_env_lulesh).evalf()
)
# コール回数
_call: float = dict_models_lulesh_call[functionName].subs(target_env_lulesh).evalf()
target_lulesh_DF: pd.DataFrame = testDF_lulesh[
(testDF_lulesh["Name"] == functionName)
& (testDF_lulesh["process"] == test_lulesh_processes[-1])
& (testDF_lulesh["iteration"] == test_lulesh_iterations[-1])
& (testDF_lulesh["size"] == test_lulesh_sizes[-1])
]
target_lulesh_DF = target_lulesh_DF.reset_index()
# 実測値
_real_inclusive: float = target_lulesh_DF.loc[0][resVar_all]
_real_call: float = target_lulesh_DF.loc[0][resVar_call]
_tmp_series: pd.Series = pd.Series(dtype="object")
_tmp_series["Name"] = functionName
_tmp_series["all to all"] = _all
_tmp_series["perCall to all"] = _perCall * _call
_tmp_series["real inclusive"] = _real_inclusive
_tmp_series["real call"] = _real_call
_list_series.append(_tmp_series)
resultDF: pd.DataFrame = pd.DataFrame(data=_list_series)
resultDF = add_relativeErrorRateCol(
inputDF=resultDF,
real_colName="real inclusive",
predicted_colName="all to all",
targetColName="vs all to all",
)
resultDF = add_relativeErrorRateCol(
inputDF=resultDF,
real_colName="real inclusive",
predicted_colName="perCall to all",
targetColName="vs perCall to all",
)
print(resultDF.mean())
resultDF
all to all 3.853701e+02 perCall to all 2.939183e+02 real inclusive 3.516647e+02 real call 6.717865e+07 vs all to all 1.170237e+02 vs perCall to all 5.267761e+01 dtype: float64
/tmp/ipykernel_121/2635962801.py:142: FutureWarning: The default value of numeric_only in DataFrame.mean is deprecated. In a future version, it will default to False. In addition, specifying 'numeric_only=None' is deprecated. Select only valid columns or specify the value of numeric_only to silence this warning.
| Name | all to all | perCall to all | real inclusive | real call | vs all to all | vs perCall to all | |
|---|---|---|---|---|---|---|---|
| 0 | .TAU_application | 4112.13002651492 | 3755.07819771439 | 4.651960e+03 | 1.000000e+00 | 11.6043617773413 | 19.2796600003743 |
| 1 | MPI_Allreduce() | 439.345968776950 | 179.465101548773 | 5.133010e+02 | 1.023000e+03 | 14.4077317642182 | 65.0370637211358 |
| 2 | MPI_Barrier() | 0.000869176944444444 | 0.0279258262284882 | 3.833333e-02 | 1.000000e+00 | 97.7325818840580 | 27.1500185343787 |
| 3 | MPI_Comm_rank() | 0.0165754414998621 | 0.00691026689926807 | 9.000000e-03 | 9.221000e+03 | 84.1715722206905 | 23.2192566747993 |
| 4 | MPI_Comm_size() | 4.85952941689757e-7 | 4.96437818799606e-7 | 4.553333e-07 | 1.000000e+00 | 6.72465776495400 | 9.02733941426189 |
| 5 | MPI_Finalize() | 0.501003301920031 | 3.99012618543521 | 7.433333e-01 | 1.000000e+00 | 32.6004526564981 | 436.788276067517 |
| 6 | MPI_Init() | 0.503405555555556 | 0.495375000000000 | 6.153333e-01 | 1.000000e+00 | 18.1897797038642 | 19.4948537378115 |
| 7 | MPI_Irecv() | 0.0635597911803491 | 0.0641030960977833 | 8.066667e-02 | 3.773280e+04 | 21.2068704375837 | 20.5333519448967 |
| 8 | MPI_Isend() | 0.426386241911113 | 1.14257579197692 | 8.950000e-01 | 3.773280e+04 | 52.3590791160767 | 27.6620996622256 |
| 9 | MPI_Reduce() | 0.0600932981444429 | 0.0478019236476088 | 7.166667e-02 | 1.000000e+00 | 16.1488863100797 | 33.2996414219412 |
| 10 | MPI_Wait() | 72.0485507261410 | 61.3435829940378 | 4.289367e+01 | 3.773280e+04 | 67.9701371441183 | 43.0131480032898 |
| 11 | MPI_Waitall() | 2087.96064418750 | 247.646034581573 | 1.180570e+02 | 3.073000e+03 | 1668.60384745292 | 109.768192128864 |
| 12 | Real_t_CalcElemVolume(const | 337.081473253762 | 310.960204792449 | 3.164563e+02 | 2.149580e+09 | 6.51753109289281 | 1.73677312221611 |
| 13 | StrToInt | 1.91816666666667e-6 | 1.89625000000000e-6 | 2.020000e-06 | 2.000000e+00 | 5.04125412541255 | 6.12623762376250 |
| 14 | int_main(int_char_**) | 4112.13124454251 | 3755.07819771439 | 4.651960e+03 | 1.000000e+00 | 11.6043355942377 | 19.2796600003743 |
| 15 | void_CalcKinematicsForElems(Domain | 748.661450811180 | 763.966273880916 | 7.690063e+02 | 1.024000e+03 | 2.64560662770699 | 0.655398952381933 |
| 16 | void_CommMonoQ(Domain | 58.6305977858969 | 0.437668426666667 | 5.460667e+00 | 1.024000e+03 | 973.689374665429 | 91.9850733732145 |
| 17 | void_CommRecv(Domain | 0.0979398580451694 | 0.0838619530358588 | 9.966667e-02 | 3.073000e+03 | 1.73258390116784 | 15.8575722048239 |
| 18 | void_CommSBN(Domain | 0.590025671762993 | 0.718211354260315 | 2.321700e+01 | 1.025000e+03 | 97.4586480950898 | 96.9065281722000 |
| 19 | void_CommSend(Domain | 319.835497015011 | 276.658392471159 | 1.274573e+02 | 3.073000e+03 | 150.935343342356 | 117.059611429047 |
| 20 | void_CommSyncPosVel(Domain | 40.4090521433832 | 46.6280102726962 | 2.990133e+01 | 1.024000e+03 | 35.1413052150957 | 55.9395688242316 |
| 21 | void_Domain::BuildMesh(Int_t_Int_t_Int_t) | 0.0102553923824921 | 0.00878725560241810 | 5.866667e-02 | 1.000000e+00 | 82.5192175298429 | 85.0217234049691 |
| 22 | void_Domain::CreateRegionIndexSets(Int_t_Int_t) | 0.00763415378183217 | 0.00754524639183196 | 2.166667e-02 | 1.000000e+00 | 64.7654440838515 | 65.1757858838525 |
| 23 | void_Domain::Domain(Int_t_Index_t_Index_t_Inde... | 1.30391133111838 | 1.50320613493525 | 9.360000e-01 | 1.000000e+00 | 39.3067661451264 | 60.5989460400911 |
| 24 | void_Domain::SetupBoundaryConditions(Int_t) | 0.00485935192872183 | 0.00462411456065167 | 7.000000e-03 | 1.000000e+00 | 30.5806867325452 | 33.9412205621190 |
| 25 | void_Domain::SetupCommBuffers(Int_t) | 0.00504001017854632 | 0.00497909186700407 | 4.000000e-03 | 1.000000e+00 | 26.0002544636580 | 24.4772966751018 |
| 26 | void_Domain::SetupElementConnectivities(Int_t) | 0.0171686507686722 | 0.0170655822920854 | 1.866667e-02 | 1.000000e+00 | 8.02508516782757 | 8.57723772097084 |
| 27 | void_Domain::SetupSymmetryPlanes(Int_t) | 3.88307804958058e-5 | 3.84669401096583e-5 | 2.836667e-05 | 1.000000e+00 | 36.8887679053082 | 35.6061343466214 |
| 28 | void_Domain::~Domain() | 0.000432445444444444 | 0.000425474400000000 | 1.000000e-03 | 1.000000e+00 | 56.7554555555556 | 57.4525600000000 |
| 29 | void_InitMeshDecomp(Int_t_Int_t_Int_t | 1.12770555555556e-5 | 1.12723333333333e-5 | 1.226667e-05 | 1.000000e+00 | 8.06748188405792 | 8.10597826086959 |
| 30 | void_ParseCommandLineOptions(int_char_**_Int_t... | 3.94702777777778e-6 | 4.83787130376345e-6 | 3.593333e-06 | 1.000000e+00 | 9.84307359307357 | 34.6346373960143 |
| 31 | void_VerifyAndWriteFinalOutput(Real_t_Domain | 1.36824327345807e-7 | 8.78196087913656e-8 | 1.296667e-07 | 1.000000e-03 | 5.52004679625255 | 32.2727952765818 |
_list_series: list[pd.Series] = []
for elem_process in test_lulesh_processes:
for elem_iteration in test_lulesh_iterations:
for elem_size in test_lulesh_sizes:
_list_series_oneCase: list[pd.Series] = []
for functionName in functionNames_lulesh:
target_env_oneCase = [
(dict_symbols_lulesh["size"], elem_size),
(dict_symbols_lulesh["iteration"], elem_iteration),
(dict_symbols_lulesh["process"], elem_process),
]
# 全体
_all: float = (
dict_models_lulesh_all[functionName]
.subs(target_env_oneCase)
.evalf()
)
# 1コール当たり
_perCall: float = (
dict_models_lulesh_perCall[functionName]
.subs(target_env_oneCase)
.evalf()
)
# コール回数
_call: float = (
dict_models_lulesh_call[functionName]
.subs(target_env_oneCase)
.evalf()
)
target_lulesh_DF: pd.DataFrame = testDF_lulesh[
(testDF_lulesh["Name"] == functionName)
& (testDF_lulesh["process"] == elem_process)
& (testDF_lulesh["iteration"] == elem_iteration)
& (testDF_lulesh["size"] == elem_size)
]
target_lulesh_DF = target_lulesh_DF.reset_index()
# 実測値
_real_inclusive: float = target_lulesh_DF.loc[0][resVar_all]
_real_call: float = target_lulesh_DF.loc[0][resVar_call]
_tmp_series: pd.Series = pd.Series(dtype="object")
_tmp_series["Name"] = functionName
_tmp_series["all to all"] = _all
_tmp_series["perCall to all"] = _perCall * _call
_tmp_series["real inclusive"] = _real_inclusive
_tmp_series["real call"] = _real_call
_list_series_oneCase.append(_tmp_series)
resultDF: pd.DataFrame = pd.DataFrame(data=_list_series_oneCase)
resultDF = add_relativeErrorRateCol(
inputDF=resultDF,
real_colName="real inclusive",
predicted_colName="all to all",
targetColName="vs all to all",
)
resultDF = add_relativeErrorRateCol(
inputDF=resultDF,
real_colName="real inclusive",
predicted_colName="perCall to all",
targetColName="vs perCall to all",
)
resultDF["process"] = elem_process
resultDF["iteration"] = elem_iteration
resultDF["size"] = elem_size
resultDF["weighted all"] = calcWeightedMAPEscore(
inputDF=resultDF,
inputColumnDict={
"funcName": "Name",
"call": "real inclusive",
"MAPE": "vs all to all",
},
)
resultDF["weighted perCall"] = calcWeightedMAPEscore(
inputDF=resultDF,
inputColumnDict={
"funcName": "Name",
"call": "real inclusive",
"MAPE": "vs perCall to all",
},
)
resultDF = resultDF.astype(
{
"all to all": float,
"perCall to all": float,
"real inclusive": float,
"real call": float,
"vs all to all": float,
"vs perCall to all": float,
"weighted perCall": float,
"weighted all": float,
}
)
_list_series.append(resultDF.mean(numeric_only=True))
resultDF_in: pd.DataFrame = pd.DataFrame(data=_list_series)
resultDF_in
| all to all | perCall to all | real inclusive | real call | vs all to all | vs perCall to all | process | iteration | size | weighted all | weighted perCall | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 10.611352 | 9.676474 | 10.839249 | 2.106369e+06 | 37.292687 | 35.430187 | 512.0 | 256.0 | 64.0 | 7.737990 | 11.677585 |
| 1 | 35.476425 | 31.471555 | 36.179501 | 7.106557e+06 | 38.620858 | 38.064345 | 512.0 | 256.0 | 96.0 | 12.185571 | 16.879060 |
| 2 | 83.877708 | 73.667464 | 85.971731 | 1.684378e+07 | 54.544020 | 45.268959 | 512.0 | 256.0 | 128.0 | 15.372071 | 20.704700 |
| 3 | 22.158231 | 19.175062 | 21.592166 | 4.204548e+06 | 49.470312 | 44.051874 | 512.0 | 512.0 | 64.0 | 12.806895 | 12.086386 |
| 4 | 74.314599 | 62.740502 | 73.697679 | 1.418549e+07 | 54.582365 | 42.422741 | 512.0 | 512.0 | 96.0 | 18.343714 | 18.276245 |
| 5 | 175.803029 | 147.083379 | 172.934481 | 3.362205e+07 | 73.606628 | 45.303635 | 512.0 | 512.0 | 128.0 | 20.484699 | 21.012191 |
| 6 | 48.476630 | 38.176309 | 44.166937 | 8.400906e+06 | 80.896379 | 63.477555 | 512.0 | 1024.0 | 64.0 | 24.250173 | 14.151128 |
| 7 | 162.680963 | 125.282475 | 145.128272 | 2.834328e+07 | 89.564398 | 51.254591 | 512.0 | 1024.0 | 96.0 | 27.234583 | 17.369565 |
| 8 | 384.764061 | 293.919305 | 344.319085 | 6.717847e+07 | 127.674076 | 53.889614 | 512.0 | 1024.0 | 128.0 | 30.057984 | 20.883720 |
| 9 | 10.619841 | 9.675814 | 12.003718 | 2.106394e+06 | 36.404214 | 37.327517 | 729.0 | 256.0 | 64.0 | 15.376221 | 20.442626 |
| 10 | 35.512586 | 31.470908 | 36.524022 | 7.106582e+06 | 38.626855 | 39.609083 | 729.0 | 256.0 | 96.0 | 12.594487 | 17.364630 |
| 11 | 83.967756 | 73.666845 | 85.826887 | 1.684380e+07 | 60.144997 | 47.124122 | 729.0 | 256.0 | 128.0 | 15.207501 | 20.652246 |
| 12 | 22.178372 | 19.174402 | 22.966625 | 4.204598e+06 | 48.673313 | 39.509351 | 729.0 | 512.0 | 64.0 | 16.780932 | 17.162932 |
| 13 | 74.390083 | 62.739855 | 74.222449 | 1.418554e+07 | 53.314672 | 41.362377 | 729.0 | 512.0 | 96.0 | 18.602162 | 18.647579 |
| 14 | 175.986288 | 147.082760 | 172.148075 | 3.362210e+07 | 79.305981 | 48.371853 | 729.0 | 512.0 | 128.0 | 20.222788 | 20.873158 |
| 15 | 48.520073 | 38.175649 | 44.713030 | 8.401006e+06 | 79.894371 | 59.372170 | 729.0 | 1024.0 | 64.0 | 25.170952 | 16.156161 |
| 16 | 162.835093 | 125.281828 | 148.186731 | 2.834338e+07 | 83.965075 | 52.108529 | 729.0 | 1024.0 | 96.0 | 28.213289 | 18.685817 |
| 17 | 385.133740 | 293.918686 | 347.009533 | 6.717857e+07 | 118.948031 | 53.259494 | 729.0 | 1024.0 | 128.0 | 30.140738 | 21.168359 |
| 18 | 10.625269 | 9.675391 | 11.676583 | 2.106414e+06 | 37.717062 | 37.350154 | 1000.0 | 256.0 | 64.0 | 13.037556 | 18.212172 |
| 19 | 35.535707 | 31.470494 | 38.129689 | 7.106602e+06 | 34.052828 | 34.529437 | 1000.0 | 256.0 | 96.0 | 15.273942 | 20.061783 |
| 20 | 84.025333 | 73.666448 | 87.698720 | 1.684382e+07 | 51.917553 | 43.952556 | 1000.0 | 256.0 | 128.0 | 16.429116 | 21.834959 |
| 21 | 22.191250 | 19.173979 | 23.075291 | 4.204639e+06 | 47.847240 | 39.671418 | 1000.0 | 512.0 | 64.0 | 17.187382 | 18.132954 |
| 22 | 74.438348 | 62.739441 | 77.022960 | 1.418558e+07 | 49.269650 | 41.011409 | 1000.0 | 512.0 | 96.0 | 20.790522 | 20.926576 |
| 23 | 176.103465 | 147.082363 | 174.806887 | 3.362214e+07 | 73.577840 | 45.496515 | 1000.0 | 512.0 | 128.0 | 21.001375 | 21.694538 |
| 24 | 48.547850 | 38.175226 | 46.963656 | 8.401087e+06 | 77.625400 | 60.831823 | 1000.0 | 1024.0 | 64.0 | 27.506611 | 19.248749 |
| 25 | 162.933646 | 125.281414 | 150.549970 | 2.834346e+07 | 80.981623 | 49.609760 | 1000.0 | 1024.0 | 96.0 | 28.812038 | 19.511240 |
| 26 | 385.370116 | 293.918289 | 351.664731 | 6.717865e+07 | 117.023694 | 52.677614 | 1000.0 | 1024.0 | 128.0 | 30.867999 | 22.073089 |
_list_series: list[pd.Series] = []
for elem_process in train_lulesh_processes:
for elem_iteration in train_lulesh_iterations:
for elem_size in train_lulesh_sizes:
for functionName in functionNames_lulesh:
target_env_oneCase = [
(dict_symbols_lulesh["size"], elem_size),
(dict_symbols_lulesh["iteration"], elem_iteration),
(dict_symbols_lulesh["process"], elem_process),
]
# 全体
_all: float = (
dict_models_lulesh_all[functionName]
.subs(target_env_oneCase)
.evalf()
)
# 1コール当たり
_perCall: float = (
dict_models_lulesh_perCall[functionName]
.subs(target_env_oneCase)
.evalf()
)
# コール回数
_call: float = (
dict_models_lulesh_call[functionName]
.subs(target_env_oneCase)
.evalf()
)
target_lulesh_DF: pd.DataFrame = trainDF_lulesh[
(trainDF_lulesh["Name"] == functionName)
& (trainDF_lulesh["process"] == elem_process)
& (trainDF_lulesh["iteration"] == elem_iteration)
& (trainDF_lulesh["size"] == elem_size)
]
_real_in: float = target_lulesh_DF.reset_index().loc[0]["Inclusive"]
_real_call: float = target_lulesh_DF.reset_index().loc[0]["#Call"]
_tmp_series: pd.Series = pd.Series(
{
"Name": functionName,
"process": elem_process,
"iteration": elem_iteration,
"size": elem_size,
"_all": _all,
"_perCall": _perCall * _call,
"_call": _call,
"_real_call": _real_call,
"_real_in": _real_in,
}
)
_list_series.append(_tmp_series)
resultDF_in_fitness: pd.DataFrame = pd.DataFrame(_list_series)
resultDF_in_fitness = add_relativeErrorRateCol(
inputDF=resultDF_in_fitness,
real_colName="_real_in",
predicted_colName="_all",
targetColName="vs _all",
)
resultDF_in_fitness = add_relativeErrorRateCol(
inputDF=resultDF_in_fitness,
real_colName="_real_in",
predicted_colName="_perCall",
targetColName="vs _perCall",
)
resultDF_in_fitness
| Name | process | iteration | size | _all | _perCall | _call | _real_call | _real_in | vs _all | vs _perCall | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | .TAU_application | 8 | 8 | 16 | 8.33841224987527 | 2.26833470751862 | 0.999999999999999 | 1.000000 | 6.966333e+00 | 19.6958550630451 | 67.4386137013453 |
| 1 | MPI_Allreduce() | 8 | 8 | 16 | 0.0351393561255279 | 0.0129322982170460 | 6.99999999999999 | 7.000000 | 5.000000e-03 | 602.787122510559 | 158.645964340919 |
| 2 | MPI_Barrier() | 8 | 8 | 16 | 0.000869176944444444 | 0.000775535421489941 | 0.999999999999999 | 1.000000 | 5.146667e-05 | 1588.81530656304 | 1406.86934227320 |
| 3 | MPI_Comm_rank() | 8 | 8 | 16 | 2.32389784946236e-5 | 1.91007170619486e-5 | 77.0000000000001 | 77.000000 | 1.700000e-05 | 36.6998734977860 | 12.3571591879332 |
| 4 | MPI_Comm_size() | 8 | 8 | 16 | 4.51732307973519e-7 | 3.51328287732536e-7 | 0.999999999999999 | 1.000000 | 2.500000e-07 | 80.6929231894076 | 40.5313150930144 |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 3835 | void_Domain::SetupSymmetryPlanes(Int_t) | 343 | 128 | 48 | 5.75602235343737e-6 | 5.71681779839729e-6 | 0.999999999999999 | 1.000000 | 5.483333e-06 | 4.97305203837142 | 4.25807535071048 |
| 3836 | void_Domain::~Domain() | 343 | 128 | 48 | 0.000127211158730159 | 0.000125590400000000 | 0.999999999999999 | 1.000000 | 1.740000e-04 | 26.8901386608284 | 27.8216091954024 |
| 3837 | void_InitMeshDecomp(Int_t_Int_t_Int_t | 343 | 128 | 48 | 1.12770555555556e-5 | 1.12723333333333e-5 | 0.999999999999999 | 1.000000 | 1.160000e-05 | 2.78400383141756 | 2.82471264367818 |
| 3838 | void_ParseCommandLineOptions(int_char_**_Int_t... | 343 | 128 | 48 | 3.94702777777778e-6 | 4.02879424283154e-6 | 0.999999999999999 | 1.000000 | 3.506667e-06 | 12.5578263624841 | 14.8895696624963 |
| 3839 | void_VerifyAndWriteFinalOutput(Real_t_Domain | 343 | 128 | 48 | 2.99538480025158e-7 | 2.56034860759274e-7 | 0.00291544582073221 | 0.002915 | 2.703333e-07 | 10.8033834864950 | 5.28920070557076 |
3840 rows × 11 columns
resultDF_in_fitness.mean()
/tmp/ipykernel_121/3270339140.py:1: FutureWarning: The default value of numeric_only in DataFrame.mean is deprecated. In a future version, it will default to False. In addition, specifying 'numeric_only=None' is deprecated. Select only valid columns or specify the value of numeric_only to silence this warning.
process 130.500000 iteration 49.600000 size 30.000000 _all 0.567709 _perCall 0.520875 _call 63915.372350 _real_call 63915.372350 _real_in 0.567709 vs _all 145.280166 vs _perCall 146.162156 dtype: float64
# exclusive, モデル適合度
_list_series: list[pd.Series] = []
for functionName in functionNames_lulesh:
_list_series_oneCase: list[pd.Series] = []
for elem_process in train_lulesh_processes:
for elem_iteration in train_lulesh_iterations:
for elem_size in train_lulesh_sizes:
target_env_oneCase = [
(dict_symbols_lulesh["size"], elem_size),
(dict_symbols_lulesh["iteration"], elem_iteration),
(dict_symbols_lulesh["process"], elem_process),
]
# 全体
_all: float = (
dict_models_lulesh_all[functionName]
.subs(target_env_oneCase)
.evalf()
)
# 1コール当たり
_perCall: float = (
dict_models_lulesh_perCall[functionName]
.subs(target_env_oneCase)
.evalf()
)
# コール回数
_call: float = (
dict_models_lulesh_call[functionName]
.subs(target_env_oneCase)
.evalf()
)
target_lulesh_DF: pd.DataFrame = trainDF_lulesh[
(trainDF_lulesh["Name"] == functionName)
& (trainDF_lulesh["process"] == elem_process)
& (trainDF_lulesh["iteration"] == elem_iteration)
& (trainDF_lulesh["size"] == elem_size)
]
target_lulesh_DF = target_lulesh_DF.reset_index()
# 実測値
_real_exclusive: float = target_lulesh_DF.loc[0][resVar_all]
_real_call: float = target_lulesh_DF.loc[0][resVar_call]
_tmp_series: pd.Series = pd.Series(dtype="object")
_tmp_series["Name"] = functionName
_tmp_series["all to all"] = _all
_tmp_series["perCall to all"] = _perCall * _call
_tmp_series["real inclusive"] = _real_exclusive
_tmp_series["real call"] = _real_call
_list_series_oneCase.append(_tmp_series)
resultDF: pd.DataFrame = pd.DataFrame(data=_list_series_oneCase)
resultDF = add_relativeErrorRateCol(
inputDF=resultDF,
real_colName="real inclusive",
predicted_colName="all to all",
targetColName="vs all to all",
)
resultDF = add_relativeErrorRateCol(
inputDF=resultDF,
real_colName="real inclusive",
predicted_colName="perCall to all",
targetColName="vs perCall to all",
)
resultDF = resultDF.astype(
{
"all to all": float,
"perCall to all": float,
"real inclusive": float,
"real call": float,
"vs all to all": float,
"vs perCall to all": float,
}
)
_tmp_list_series: pd.Series = resultDF.mean(numeric_only=True)
_tmp_list_series["Name"] = functionName
_list_series.append(_tmp_list_series)
resultDF_in_fitness: pd.DataFrame = pd.DataFrame(_list_series)
resultDF_in_fitness
| all to all | perCall to all | real inclusive | real call | vs all to all | vs perCall to all | Name | |
|---|---|---|---|---|---|---|---|
| 0 | 6.499275e+00 | 5.996800e+00 | 6.499275e+00 | 1.000000e+00 | 18.531208 | 47.868233 | .TAU_application |
| 1 | 4.851583e-01 | 4.998763e-01 | 4.851583e-01 | 4.860000e+01 | 70.028502 | 54.303651 | MPI_Allreduce() |
| 2 | 8.691769e-04 | 8.869008e-04 | 8.691769e-04 | 1.000000e+00 | 396.747887 | 409.610224 | MPI_Barrier() |
| 3 | 1.959781e-04 | 2.089635e-04 | 1.959781e-04 | 4.514000e+02 | 13.912200 | 21.113674 | MPI_Comm_rank() |
| 4 | 4.641972e-07 | 4.599250e-07 | 4.641972e-07 | 1.000000e+00 | 14.603987 | 14.554590 | MPI_Comm_size() |
| 5 | 2.350408e+00 | 1.864908e+00 | 2.350408e+00 | 1.000000e+00 | 57.047656 | 72.380782 | MPI_Finalize() |
| 6 | 5.034056e-01 | 4.953750e-01 | 5.034056e-01 | 1.000000e+00 | 19.225513 | 18.808969 | MPI_Init() |
| 7 | 8.598322e-04 | 8.888162e-04 | 8.598322e-04 | 1.310194e+03 | 30.815303 | 33.889409 | MPI_Irecv() |
| 8 | 1.004190e-02 | 8.991201e-03 | 1.004190e-02 | 1.310194e+03 | 196.520935 | 168.800569 | MPI_Isend() |
| 9 | 1.340376e-03 | 1.195829e-03 | 1.340376e-03 | 1.000000e+00 | 711.239913 | 608.350769 | MPI_Reduce() |
| 10 | 8.030106e-02 | 7.559656e-02 | 8.030106e-02 | 1.310194e+03 | 670.223115 | 593.371131 | MPI_Wait() |
| 11 | 2.520304e-01 | 2.651487e-01 | 2.520304e-01 | 1.498000e+02 | 235.469099 | 227.909330 | MPI_Waitall() |
| 12 | 3.230556e-01 | 3.055593e-01 | 3.230556e-01 | 2.040194e+06 | 26.653478 | 9.741670 | Real_t_CalcElemVolume(const |
| 13 | 1.918167e-06 | 1.896250e-06 | 1.918167e-06 | 2.000000e+00 | 4.813321 | 4.558068 | StrToInt |
| 14 | 6.499272e+00 | 5.996800e+00 | 6.499272e+00 | 1.000000e+00 | 18.531235 | 47.868432 | int_main(int_char_**) |
| 15 | 7.321944e-01 | 7.243828e-01 | 7.321944e-01 | 4.960000e+01 | 20.147096 | 8.701478 | void_CalcKinematicsForElems(Domain |
| 16 | 1.996276e-02 | 2.119956e-02 | 1.996276e-02 | 4.960000e+01 | 337.411414 | 587.220889 | void_CommMonoQ(Domain |
| 17 | 1.326047e-03 | 1.262148e-03 | 1.326047e-03 | 1.498000e+02 | 28.323250 | 27.543479 | void_CommRecv(Domain |
| 18 | 3.238175e-02 | 3.545512e-02 | 3.238175e-02 | 5.060000e+01 | 653.772904 | 647.333088 | void_CommSBN(Domain |
| 19 | 2.972667e-01 | 2.995477e-01 | 2.972667e-01 | 1.498000e+02 | 175.679522 | 174.153456 | void_CommSend(Domain |
| 20 | 5.111839e-02 | 4.868275e-02 | 5.111839e-02 | 4.960000e+01 | 187.353032 | 142.852551 | void_CommSyncPosVel(Domain |
| 21 | 5.212414e-04 | 4.756567e-04 | 5.212414e-04 | 1.000000e+00 | 26.816748 | 30.119448 | void_Domain::BuildMesh(Int_t_Int_t_Int_t) |
| 22 | 4.200039e-04 | 4.166692e-04 | 4.200039e-04 | 1.000000e+00 | 7.963392 | 7.352371 | void_Domain::CreateRegionIndexSets(Int_t_Int_t) |
| 23 | 2.445430e-02 | 2.351667e-02 | 2.445430e-02 | 1.000000e+00 | 16.558680 | 12.883915 | void_Domain::Domain(Int_t_Index_t_Index_t_Inde... |
| 24 | 8.139061e-05 | 7.854017e-05 | 8.139061e-05 | 1.000000e+00 | 61.170717 | 56.710331 | void_Domain::SetupBoundaryConditions(Int_t) |
| 25 | 3.473678e-04 | 3.449475e-04 | 3.473678e-04 | 1.000000e+00 | 22.790014 | 22.831559 | void_Domain::SetupCommBuffers(Int_t) |
| 26 | 3.219914e-04 | 3.211900e-04 | 3.219914e-04 | 1.000000e+00 | 5.643632 | 5.133163 | void_Domain::SetupElementConnectivities(Int_t) |
| 27 | 2.786811e-06 | 2.776750e-06 | 2.786811e-06 | 1.000000e+00 | 6.538504 | 6.346429 | void_Domain::SetupSymmetryPlanes(Int_t) |
| 28 | 5.853344e-05 | 5.811650e-05 | 5.853344e-05 | 1.000000e+00 | 587.887615 | 591.632391 | void_Domain::~Domain() |
| 29 | 1.127706e-05 | 1.127233e-05 | 1.127706e-05 | 1.000000e+00 | 5.037710 | 5.035600 | void_InitMeshDecomp(Int_t_Int_t_Int_t |
| 30 | 3.947028e-06 | 3.958000e-06 | 3.947028e-06 | 1.000000e+00 | 12.453269 | 12.553923 | void_ParseCommandLineOptions(int_char_**_Int_t... |
| 31 | 2.787308e-06 | 2.827912e-06 | 2.787308e-06 | 3.220118e-02 | 9.054462 | 5.655438 | void_VerifyAndWriteFinalOutput(Real_t_Domain |
# Exclusive
expVar: list[str] = ["process", "iteration", "size"]
resVar: str = "Exclusive"
trainDF_lulesh: pd.DataFrame = ret_averaged_rawDF_lulesh(
list_process=train_lulesh_processes,
list_iteration=train_lulesh_iterations,
list_size=train_lulesh_sizes,
list_csvDir=list_csvDir,
resVar=resVar,
)
testDF_lulesh: pd.DataFrame = ret_averaged_rawDF_lulesh(
list_process=test_lulesh_processes,
list_iteration=test_lulesh_iterations,
list_size=test_lulesh_sizes,
list_csvDir=list_csvDir,
resVar=resVar,
)
trainDF_lulesh = trainDF_lulesh.reset_index()
testDF_lulesh = testDF_lulesh.reset_index()
functionNames_lulesh: list[str] = sorted(list(set(trainDF_lulesh["Name"])))
dict_symbols_lulesh = {}
for elem in expVar:
dict_symbols_lulesh[elem] = symbols(elem, real=True)
target_env = [
(dict_symbols_lulesh["size"], test_lulesh_sizes[-1]),
(dict_symbols_lulesh["iteration"], test_lulesh_iterations[-1]),
(dict_symbols_lulesh["process"], test_lulesh_processes[-1]),
]
target_env_lulesh = [
(dict_symbols_lulesh["size"], test_lulesh_sizes[-1]),
(dict_symbols_lulesh["iteration"], test_lulesh_iterations[-1]),
(dict_symbols_lulesh["process"], test_lulesh_processes[-1]),
]
modelerName: str = "multi-parameter"
resVar_all: str = "Exclusive"
resVar_perCall: str = "ExclusivePerCall"
resVar_call: str = "#Call"
dict_models_lulesh_all = {}
dict_models_lulesh_perCall = {}
dict_models_lulesh_call = {}
# モデル構築
for functionName in functionNames_lulesh:
trainDF_lulesh_perFunc: pd.DataFrame = trainDF_lulesh[
trainDF_lulesh["Name"] == functionName
]
testDF_lulesh_perFUnc: pd.DataFrame = testDF_lulesh[
testDF_lulesh["Name"] == functionName
]
str_ExtraP_model_all: str = get_ExtraP_model(
inputDF_perFunc=trainDF_lulesh_perFunc,
expVar=expVar,
resVar=resVar_all,
functionName=functionName,
benchmarkName="lulesh",
modelerName=modelerName,
modelerOption=modelerOption,
dict_symbols=dict_symbols_lulesh,
)
dict_models_lulesh_all[functionName] = str_ExtraP_model_all
str_ExtraP_model_perCall: str = get_ExtraP_model(
inputDF_perFunc=trainDF_lulesh_perFunc,
expVar=expVar,
resVar=resVar_perCall,
functionName=functionName,
benchmarkName="lulesh",
modelerName=modelerName,
modelerOption=modelerOption,
dict_symbols=dict_symbols_lulesh,
)
dict_models_lulesh_perCall[functionName] = str_ExtraP_model_perCall
str_ExtraP_model_call: str = get_ExtraP_model(
inputDF_perFunc=trainDF_lulesh_perFunc,
expVar=expVar,
resVar=resVar_call,
functionName=functionName,
benchmarkName="lulesh",
modelerName=modelerName,
modelerOption=modelerOption,
dict_symbols=dict_symbols_lulesh,
)
dict_models_lulesh_call[functionName] = str_ExtraP_model_call
_list_series: list[pd.Series] = []
# 予測
for functionName in functionNames_lulesh:
# 全体
_all: float = dict_models_lulesh_all[functionName].subs(target_env_lulesh).evalf()
# 1コール当たり
_perCall: float = (
dict_models_lulesh_perCall[functionName].subs(target_env_lulesh).evalf()
)
# コール回数
_call: float = dict_models_lulesh_call[functionName].subs(target_env_lulesh).evalf()
target_lulesh_DF: pd.DataFrame = testDF_lulesh[
(testDF_lulesh["Name"] == functionName)
& (testDF_lulesh["process"] == test_lulesh_processes[-1])
& (testDF_lulesh["iteration"] == test_lulesh_iterations[-1])
& (testDF_lulesh["size"] == test_lulesh_sizes[-1])
]
target_lulesh_DF = target_lulesh_DF.reset_index()
# 実測値
_real_exclusive: float = target_lulesh_DF.loc[0][resVar_all]
_real_call: float = target_lulesh_DF.loc[0][resVar_call]
_tmp_series: pd.Series = pd.Series(dtype="object")
_tmp_series["Name"] = functionName
_tmp_series["all to all"] = _all
_tmp_series["perCall to all"] = _perCall * _call
_tmp_series["real exclusive"] = _real_exclusive
_tmp_series["real call"] = _real_call
_list_series.append(_tmp_series)
resultDF: pd.DataFrame = pd.DataFrame(data=_list_series)
resultDF = add_relativeErrorRateCol(
inputDF=resultDF,
real_colName="real exclusive",
predicted_colName="all to all",
targetColName="vs all to all",
)
resultDF = add_relativeErrorRateCol(
inputDF=resultDF,
real_colName="real exclusive",
predicted_colName="perCall to all",
targetColName="vs perCall to all",
)
print(resultDF.mean())
resultDF
all to all 1.682026e+02 perCall to all 1.061613e+02 real exclusive 1.453734e+02 real call 6.717865e+07 vs all to all 9.842000e+01 vs perCall to all 7.618677e+01 dtype: float64
/tmp/ipykernel_121/3098613647.py:142: FutureWarning: The default value of numeric_only in DataFrame.mean is deprecated. In a future version, it will default to False. In addition, specifying 'numeric_only=None' is deprecated. Select only valid columns or specify the value of numeric_only to silence this warning.
| Name | all to all | perCall to all | real exclusive | real call | vs all to all | vs perCall to all | |
|---|---|---|---|---|---|---|---|
| 0 | .TAU_application | 3.58708333333333e-6 | 2.10570898355123e-6 | 3.366667e-06 | 1.000000e+00 | 6.54702970297031 | 37.4541886073892 |
| 1 | MPI_Allreduce() | 437.915990349888 | 179.465101548773 | 5.133010e+02 | 1.023000e+03 | 14.6863165374920 | 65.0370637211358 |
| 2 | MPI_Barrier() | 0.000816330555555555 | 0.0279258262284882 | 3.833333e-02 | 1.000000e+00 | 97.8704420289855 | 27.1500185343787 |
| 3 | MPI_Comm_rank() | 0.0165749444775296 | 0.00691026689926807 | 9.000000e-03 | 9.221000e+03 | 84.1660497503293 | 23.2192566747993 |
| 4 | MPI_Comm_size() | 4.85952941689757e-7 | 4.96437818799606e-7 | 4.553333e-07 | 1.000000e+00 | 6.72465776495400 | 9.02733941426189 |
| 5 | MPI_Finalize() | 0.488460112539233 | 3.99012618543521 | 7.433333e-01 | 1.000000e+00 | 34.2878772368745 | 436.788276067517 |
| 6 | MPI_Init() | 0.493019444444445 | 0.495375000000000 | 6.153333e-01 | 1.000000e+00 | 19.8776634163958 | 19.4948537378115 |
| 7 | MPI_Irecv() | 0.0607189920652085 | 0.0641030960977833 | 5.633333e-02 | 3.773280e+04 | 7.78519301516302 | 13.7924782800888 |
| 8 | MPI_Isend() | 3.17498669266321 | 1.14257579197692 | 8.950000e-01 | 3.773280e+04 | 254.747116498683 | 27.6620996622256 |
| 9 | MPI_Reduce() | 0.0581820601722947 | 0.0478019236476088 | 7.166667e-02 | 1.000000e+00 | 18.8157299921470 | 33.2996414219412 |
| 10 | MPI_Wait() | 71.5007503928785 | 61.3435829940378 | 4.289367e+01 | 3.773280e+04 | 66.6930247500683 | 43.0131480032898 |
| 11 | MPI_Waitall() | 1919.56884083925 | 247.646034581573 | 1.180570e+02 | 3.073000e+03 | 1525.96782981038 | 109.768192128864 |
| 12 | Real_t_CalcElemVolume(const | 335.378503734694 | 310.960204792449 | 3.164563e+02 | 2.149580e+09 | 5.97939380831707 | 1.73677312221611 |
| 13 | StrToInt | 1.91816666666667e-6 | 1.89625000000000e-6 | 2.020000e-06 | 2.000000e+00 | 5.04125412541255 | 6.12623762376250 |
| 14 | int_main(int_char_**) | 2135.89439042910 | 2103.48508973343 | 3.181085e+03 | 1.000000e+00 | 32.8564187870145 | 33.8752315724532 |
| 15 | void_CalcKinematicsForElems(Domain | 445.419547861958 | 448.315849943123 | 4.528560e+02 | 1.024000e+03 | 1.64212291281154 | 1.00255932501224 |
| 16 | void_CommMonoQ(Domain | 5.25854310710730 | 2.92473189431500 | 1.440000e+00 | 1.024000e+03 | 265.176604660229 | 103.106381549652 |
| 17 | void_CommRecv(Domain | 0.00195521666666667 | -0.321952845725027 | 4.700000e-02 | 3.073000e+03 | 95.8399645390071 | 785.006054734100 |
| 18 | void_CommSBN(Domain | 1.57211617935831 | 4.76941347075195 | 2.805667e+00 | 1.025000e+03 | 43.9663949379240 | 69.9921636242822 |
| 19 | void_CommSend(Domain | 3.13405379446953 | 16.3658435701341 | 8.500000e+00 | 3.073000e+03 | 63.1287788885937 | 92.5393361192247 |
| 20 | void_CommSyncPosVel(Domain | 21.7678534923438 | 15.4250480861394 | 1.143733e+01 | 1.024000e+03 | 90.3228039083456 | 34.8657736605796 |
| 21 | void_Domain::BuildMesh(Int_t_Int_t_Int_t) | 0.0101294785767843 | 0.00878725560241810 | 5.866667e-02 | 1.000000e+00 | 82.7338433350268 | 85.0217234049691 |
| 22 | void_Domain::CreateRegionIndexSets(Int_t_Int_t) | 0.00722072107514937 | 0.00754920639975394 | 2.166667e-02 | 1.000000e+00 | 66.6735950377721 | 65.1575089242126 |
| 23 | void_Domain::Domain(Int_t_Index_t_Index_t_Inde... | 0.731860884361024 | 0.965704856368412 | 5.293333e-01 | 1.000000e+00 | 38.2608723603950 | 82.4379451577605 |
| 24 | void_Domain::SetupBoundaryConditions(Int_t) | 0.00485935192872183 | 0.00462411456065167 | 7.000000e-03 | 1.000000e+00 | 30.5806867325452 | 33.9412205621190 |
| 25 | void_Domain::SetupCommBuffers(Int_t) | 0.00486234543933642 | 0.00497909186700407 | 4.000000e-03 | 1.000000e+00 | 21.5586359834105 | 24.4772966751018 |
| 26 | void_Domain::SetupElementConnectivities(Int_t) | 0.0171993242439927 | 0.0170655822920854 | 1.866667e-02 | 1.000000e+00 | 7.86076297861032 | 8.57723772097084 |
| 27 | void_Domain::SetupSymmetryPlanes(Int_t) | 3.86090468625521e-5 | 3.84669401096583e-5 | 2.836667e-05 | 1.000000e+00 | 36.1070982228629 | 35.6061343466214 |
| 28 | void_Domain::~Domain() | 0.000432445444444444 | 0.000425474400000000 | 1.000000e-03 | 1.000000e+00 | 56.7554555555556 | 57.4525600000000 |
| 29 | void_InitMeshDecomp(Int_t_Int_t_Int_t | 1.12770555555556e-5 | 1.12723333333333e-5 | 1.226667e-05 | 1.000000e+00 | 8.06748188405792 | 8.10597826086959 |
| 30 | void_ParseCommandLineOptions(int_char_**_Int_t... | 2.08527777777778e-6 | 2.06058333333333e-6 | 1.573333e-06 | 1.000000e+00 | 32.5388418079097 | 30.9692796610169 |
| 31 | void_VerifyAndWriteFinalOutput(Real_t_Domain | 9.57197219605595e-8 | 8.78196087913656e-8 | 1.296667e-07 | 1.000000e-03 | 26.1801630124220 | 32.2727952765818 |
_list_series: list[pd.Series] = []
for elem_process in test_lulesh_processes:
for elem_iteration in test_lulesh_iterations:
for elem_size in test_lulesh_sizes:
_list_series_oneCase: list[pd.Series] = []
for functionName in functionNames_lulesh:
target_env_oneCase = [
(dict_symbols_lulesh["size"], elem_size),
(dict_symbols_lulesh["iteration"], elem_iteration),
(dict_symbols_lulesh["process"], elem_process),
]
# 全体
_all: float = (
dict_models_lulesh_all[functionName]
.subs(target_env_oneCase)
.evalf()
)
# 1コール当たり
_perCall: float = (
dict_models_lulesh_perCall[functionName]
.subs(target_env_oneCase)
.evalf()
)
# コール回数
_call: float = (
dict_models_lulesh_call[functionName]
.subs(target_env_oneCase)
.evalf()
)
target_lulesh_DF: pd.DataFrame = testDF_lulesh[
(testDF_lulesh["Name"] == functionName)
& (testDF_lulesh["process"] == elem_process)
& (testDF_lulesh["iteration"] == elem_iteration)
& (testDF_lulesh["size"] == elem_size)
]
target_lulesh_DF = target_lulesh_DF.reset_index()
# 実測値
_real_exclusive: float = target_lulesh_DF.loc[0][resVar_all]
_real_call: float = target_lulesh_DF.loc[0][resVar_call]
_tmp_series: pd.Series = pd.Series(dtype="object")
_tmp_series["Name"] = functionName
_tmp_series["all to all"] = _all
_tmp_series["perCall to all"] = _perCall * _call
_tmp_series["real exclusive"] = _real_exclusive
_tmp_series["real call"] = _real_call
_list_series_oneCase.append(_tmp_series)
resultDF: pd.DataFrame = pd.DataFrame(data=_list_series_oneCase)
resultDF = add_relativeErrorRateCol(
inputDF=resultDF,
real_colName="real exclusive",
predicted_colName="all to all",
targetColName="vs all to all",
)
resultDF = add_relativeErrorRateCol(
inputDF=resultDF,
real_colName="real exclusive",
predicted_colName="perCall to all",
targetColName="vs perCall to all",
)
resultDF["process"] = elem_process
resultDF["iteration"] = elem_iteration
resultDF["size"] = elem_size
resultDF["weighted all"] = calcWeightedMAPEscore(
inputDF=resultDF,
inputColumnDict={
"funcName": "Name",
"call": "real exclusive",
"MAPE": "vs all to all",
},
)
resultDF["weighted perCall"] = calcWeightedMAPEscore(
inputDF=resultDF,
inputColumnDict={
"funcName": "Name",
"call": "real exclusive",
"MAPE": "vs perCall to all",
},
)
resultDF = resultDF.astype(
{
"all to all": float,
"perCall to all": float,
"real exclusive": float,
"real call": float,
"vs all to all": float,
"vs perCall to all": float,
"weighted perCall": float,
"weighted all": float,
}
)
_list_series.append(resultDF.mean(numeric_only=True))
resultDF_ex: pd.DataFrame = pd.DataFrame(_list_series)
resultDF_ex
| all to all | perCall to all | real exclusive | real call | vs all to all | vs perCall to all | process | iteration | size | weighted all | weighted perCall | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 3.919365 | 3.562725 | 4.129666 | 2.106369e+06 | 33.035133 | 35.831271 | 512.0 | 256.0 | 64.0 | 20.742996 | 19.959976 |
| 1 | 13.114372 | 11.462402 | 14.749491 | 7.106557e+06 | 43.461620 | 37.633187 | 512.0 | 256.0 | 96.0 | 27.631758 | 27.335283 |
| 2 | 31.020158 | 26.597047 | 35.743929 | 1.684378e+07 | 61.324288 | 44.530961 | 512.0 | 256.0 | 128.0 | 33.291483 | 33.645807 |
| 3 | 8.713426 | 7.086378 | 8.229333 | 4.204548e+06 | 35.542758 | 56.707942 | 512.0 | 512.0 | 64.0 | 32.149903 | 19.966094 |
| 4 | 29.254974 | 22.871801 | 29.867408 | 1.418549e+07 | 50.781096 | 42.295487 | 512.0 | 512.0 | 96.0 | 38.626849 | 27.925843 |
| 5 | 69.256516 | 53.112093 | 71.755460 | 3.362205e+07 | 72.430286 | 59.479508 | 512.0 | 512.0 | 128.0 | 43.509452 | 33.603933 |
| 6 | 21.126702 | 14.139320 | 16.752916 | 8.400906e+06 | 52.645392 | 107.862594 | 512.0 | 1024.0 | 64.0 | 55.409869 | 21.430934 |
| 7 | 71.027394 | 45.701645 | 59.083991 | 2.834328e+07 | 68.856654 | 107.176906 | 512.0 | 1024.0 | 96.0 | 59.680412 | 27.542671 |
| 8 | 168.201720 | 106.161514 | 143.088033 | 6.717847e+07 | 102.900533 | 117.750802 | 512.0 | 1024.0 | 128.0 | 64.545745 | 33.720302 |
| 9 | 3.919446 | 3.562086 | 4.470895 | 2.106394e+06 | 28.337839 | 33.316542 | 729.0 | 256.0 | 64.0 | 19.142831 | 21.792942 |
| 10 | 13.114453 | 11.461814 | 14.864783 | 7.106582e+06 | 46.335564 | 40.238899 | 729.0 | 256.0 | 96.0 | 27.847072 | 27.522685 |
| 11 | 31.020239 | 26.596560 | 35.715866 | 1.684380e+07 | 63.040293 | 43.229220 | 729.0 | 256.0 | 128.0 | 33.352645 | 33.778572 |
| 12 | 8.713507 | 7.085757 | 8.631677 | 4.204598e+06 | 32.987539 | 46.299854 | 729.0 | 512.0 | 64.0 | 29.016446 | 19.862770 |
| 13 | 29.255055 | 22.871269 | 30.057960 | 1.418554e+07 | 50.990390 | 42.400752 | 729.0 | 512.0 | 96.0 | 38.743319 | 28.098067 |
| 14 | 69.256597 | 53.111736 | 71.567647 | 3.362210e+07 | 76.383717 | 53.270361 | 729.0 | 512.0 | 128.0 | 43.697301 | 33.829149 |
| 15 | 21.126783 | 14.138728 | 16.882812 | 8.401006e+06 | 48.957995 | 101.215953 | 729.0 | 1024.0 | 64.0 | 50.151774 | 18.097539 |
| 16 | 71.027475 | 45.701218 | 60.051387 | 2.834338e+07 | 68.194426 | 108.782021 | 729.0 | 1024.0 | 96.0 | 59.832136 | 28.208945 |
| 17 | 168.201801 | 106.161410 | 143.849095 | 6.717857e+07 | 99.479951 | 73.517453 | 729.0 | 1024.0 | 128.0 | 64.301007 | 33.695873 |
| 18 | 3.920205 | 3.561676 | 4.377718 | 2.106414e+06 | 28.275866 | 33.864247 | 1000.0 | 256.0 | 64.0 | 17.709084 | 20.275724 |
| 19 | 13.115211 | 11.461438 | 15.337157 | 7.106602e+06 | 40.035304 | 38.153890 | 1000.0 | 256.0 | 96.0 | 28.767566 | 28.708202 |
| 20 | 31.020998 | 26.596248 | 36.279199 | 1.684382e+07 | 61.212865 | 43.461281 | 1000.0 | 256.0 | 128.0 | 33.728206 | 34.070148 |
| 21 | 8.714266 | 7.085359 | 8.668156 | 4.204639e+06 | 36.364071 | 47.253969 | 1000.0 | 512.0 | 64.0 | 32.809628 | 19.992638 |
| 22 | 29.255814 | 22.870929 | 30.877772 | 1.418558e+07 | 49.038449 | 45.953220 | 1000.0 | 512.0 | 96.0 | 39.506253 | 29.168207 |
| 23 | 69.257356 | 53.111507 | 72.379939 | 3.362214e+07 | 71.829526 | 48.820699 | 1000.0 | 512.0 | 128.0 | 43.823675 | 34.006411 |
| 24 | 21.127541 | 14.138348 | 17.585510 | 8.401087e+06 | 45.927345 | 100.938777 | 1000.0 | 1024.0 | 64.0 | 50.567381 | 21.253765 |
| 25 | 71.028233 | 45.700944 | 60.735022 | 2.834346e+07 | 66.114713 | 105.331270 | 1000.0 | 1024.0 | 96.0 | 59.713227 | 28.463254 |
| 26 | 168.202560 | 106.161342 | 145.373387 | 6.717865e+07 | 98.420003 | 76.186773 | 1000.0 | 1024.0 | 128.0 | 64.507110 | 34.165177 |
_list_series: list[pd.Series] = []
for elem_process in train_lulesh_processes:
for elem_iteration in train_lulesh_iterations:
for elem_size in train_lulesh_sizes:
for functionName in functionNames_lulesh:
target_env_oneCase = [
(dict_symbols_lulesh["size"], elem_size),
(dict_symbols_lulesh["iteration"], elem_iteration),
(dict_symbols_lulesh["process"], elem_process),
]
# 全体
_all: float = (
dict_models_lulesh_all[functionName]
.subs(target_env_oneCase)
.evalf()
)
# 1コール当たり
_perCall: float = (
dict_models_lulesh_perCall[functionName]
.subs(target_env_oneCase)
.evalf()
)
# コール回数
_call: float = (
dict_models_lulesh_call[functionName]
.subs(target_env_oneCase)
.evalf()
)
target_lulesh_DF: pd.DataFrame = trainDF_lulesh[
(trainDF_lulesh["Name"] == functionName)
& (trainDF_lulesh["process"] == elem_process)
& (trainDF_lulesh["iteration"] == elem_iteration)
& (trainDF_lulesh["size"] == elem_size)
]
_real_ex: float = target_lulesh_DF.reset_index().loc[0]["Exclusive"]
_real_call: float = target_lulesh_DF.reset_index().loc[0]["#Call"]
_tmp_series: pd.Series = pd.Series(
{
"Name": functionName,
"process": elem_process,
"iteration": elem_iteration,
"size": elem_size,
"_all": _all,
"_perCall": _perCall * _call,
"_real_call": _real_call,
"_call": _call,
"_real_ex": _real_ex,
}
)
_list_series.append(_tmp_series)
resultDF_ex_fitness: pd.DataFrame = pd.DataFrame(_list_series)
resultDF_ex_fitness = add_relativeErrorRateCol(
inputDF=resultDF_ex_fitness,
real_colName="_real_ex",
predicted_colName="_all",
targetColName="vs _all",
)
resultDF_ex_fitness = add_relativeErrorRateCol(
inputDF=resultDF_ex_fitness,
real_colName="_real_ex",
predicted_colName="_perCall",
targetColName="vs _perCall",
)
resultDF_ex_fitness
| Name | process | iteration | size | _all | _perCall | _real_call | _call | _real_ex | vs _all | vs _perCall | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | .TAU_application | 8 | 8 | 16 | 3.58708333333333e-6 | 3.68817545339519e-6 | 1.000000 | 0.999999999999999 | 3.420000e-06 | 4.88547758284604 | 7.84138752617504 |
| 1 | MPI_Allreduce() | 8 | 8 | 16 | 0.0230764914454476 | 0.0129322982170460 | 7.000000 | 6.99999999999999 | 5.000000e-03 | 361.529828908953 | 158.645964340919 |
| 2 | MPI_Barrier() | 8 | 8 | 16 | 0.000816330555555555 | 0.000775535421489941 | 1.000000 | 0.999999999999999 | 5.140000e-05 | 1488.19174232598 | 1408.82377721778 |
| 3 | MPI_Comm_rank() | 8 | 8 | 16 | 2.32349761051373e-5 | 1.91007170619486e-5 | 77.000000 | 77.0000000000001 | 1.700000e-05 | 36.6763300302195 | 12.3571591879332 |
| 4 | MPI_Comm_size() | 8 | 8 | 16 | 4.51732307973519e-7 | 3.51328287732536e-7 | 1.000000 | 0.999999999999999 | 2.500000e-07 | 80.6929231894076 | 40.5313150930144 |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 3835 | void_Domain::SetupSymmetryPlanes(Int_t) | 343 | 128 | 48 | 5.72710187918834e-6 | 5.71681779839729e-6 | 1.000000 | 0.999999999999999 | 5.483333e-06 | 4.44562697607912 | 4.25807535071048 |
| 3836 | void_Domain::~Domain() | 343 | 128 | 48 | 0.000127211158730159 | 0.000125590400000000 | 1.000000 | 0.999999999999999 | 1.740000e-04 | 26.8901386608284 | 27.8216091954024 |
| 3837 | void_InitMeshDecomp(Int_t_Int_t_Int_t | 343 | 128 | 48 | 1.12770555555556e-5 | 1.12723333333333e-5 | 1.000000 | 0.999999999999999 | 1.160000e-05 | 2.78400383141756 | 2.82471264367818 |
| 3838 | void_ParseCommandLineOptions(int_char_**_Int_t... | 343 | 128 | 48 | 2.08527777777778e-6 | 2.06058333333333e-6 | 1.000000 | 0.999999999999999 | 1.606667e-06 | 29.7890733056709 | 28.2520746887966 |
| 3839 | void_VerifyAndWriteFinalOutput(Real_t_Domain | 343 | 128 | 48 | 2.58210082572280e-7 | 2.56034860759274e-7 | 0.002915 | 0.00291544582073221 | 2.703333e-07 | 4.48455638509998 | 5.28920070557076 |
3840 rows × 11 columns
resultDF_ex_fitness.mean()
/tmp/ipykernel_121/1762337805.py:1: FutureWarning: The default value of numeric_only in DataFrame.mean is deprecated. In a future version, it will default to False. In addition, specifying 'numeric_only=None' is deprecated. Select only valid columns or specify the value of numeric_only to silence this warning.
process 130.500000 iteration 49.600000 size 30.000000 _all 0.202899 _perCall 0.186938 _real_call 63915.372350 _call 63915.372350 _real_ex 0.202899 vs _all 152.021226 vs _perCall 106.569120 dtype: float64
print(resultDF_in.to_csv())
print(resultDF_ex.to_csv())
,all to all,perCall to all,real inclusive,real call,vs all to all,vs perCall to all,process,iteration,size,weighted all,weighted perCall 0,10.611351930359527,9.676474217800424,10.839249277552083,2106369.137561035,37.29268669015393,35.43018723269541,512.0,256.0,64.0,7.737989842121091,11.677584614814636 1,35.47642502959257,31.471554773470167,36.179501466729164,7106556.637561034,38.620857939519006,38.064344663643865,512.0,256.0,96.0,12.18557072646931,16.879060132916607 2,83.87770766424927,73.6674641556908,85.97173067903124,16843775.387561034,54.54402041982698,45.268959323177626,512.0,256.0,128.0,15.372071463442103,20.704699677786284 3,22.158231473484413,19.17506225333905,21.59216604190625,4204548.075061034,49.47031161730601,44.051874013721005,512.0,512.0,64.0,12.806894990419677,12.086386051975106 4,74.31459919508686,62.74050156199445,73.69767874593751,14185485.575061036,54.582365471743245,42.422740989603575,512.0,512.0,96.0,18.343713967012658,18.27624453544423 5,175.80302931250344,147.08337889402918,172.9344806705521,33622048.07506103,73.60662845024501,45.30363450313307,512.0,512.0,128.0,20.484699194282967,21.012191216686908 6,48.47662976735646,38.17630899735836,44.16693691421875,8400905.950061036,80.89637897677085,63.477555273759606,512.0,1024.0,64.0,24.250173404713387,14.151127994233732 7,162.6809632707526,125.28247459285637,145.12827248022916,28343280.950061034,89.5643980680369,51.25459148591234,512.0,1024.0,96.0,27.234582765993686,17.369564854515755 8,384.76406064848595,293.91930492411086,344.3190848386354,67178468.45006104,127.67407578608183,53.889614344304164,512.0,1024.0,128.0,30.057984088875145,20.883720467560195 9,10.619840860810292,9.675813824447374,12.003718211395832,2106394.114417867,36.40421419306993,37.32751689271612,729.0,256.0,64.0,15.376220620392743,20.44262556548373 10,35.51258578756824,31.470908313548193,36.52402229557292,7106581.614417867,38.62685545407163,39.60908282616979,729.0,256.0,96.0,12.59448709298471,17.36463000784385 11,83.96775566529726,73.6668448292925,85.82688698654167,16843800.36441787,60.144996553270715,47.124121822515775,729.0,256.0,128.0,15.207500739598695,20.652246235200828 12,22.17837169973441,19.17440186117058,22.966624707375,4204597.968792867,48.67331304789317,39.509350635350664,729.0,512.0,64.0,16.78093243205558,17.16293151612092 13,74.39008307638494,62.73985510325706,74.22244930017709,14185535.468792867,53.314671581624665,41.36237651450493,729.0,512.0,96.0,18.60216198192579,18.647579257837172 14,175.9862876799453,147.08275956881548,172.14807450036457,33622097.96879286,79.30598062379737,48.371852621472414,729.0,512.0,128.0,20.222788208640875,20.8731575283828 15,48.52007258520491,38.17564860578217,44.713030477781246,8401005.681292867,79.89437050531198,59.37217045764684,729.0,1024.0,64.0,25.17095190358091,16.156161021115857 16,162.83509339869548,125.28182813471128,148.1867310167396,28343380.68129287,83.9650752478088,52.108528917455544,729.0,1024.0,96.0,28.213288745997843,18.6858168230563 17,385.13373974871547,293.9186855994894,347.00953282354175,67178568.18129286,118.94803111396571,53.259493741196465,729.0,1024.0,128.0,30.140737908230065,21.168359233315538 18,10.625268769003398,9.675390893871992,11.676582892072915,2106414.43003125,37.71706213556318,37.35015401255731,1000.0,256.0,64.0,13.03755565649311,18.212172234343676 19,35.535707342824665,31.470494292149905,38.129688612802084,7106601.93003125,34.05282840903999,34.52943690409282,1000.0,256.0,96.0,15.27394240214445,20.061783492132943 20,84.02533327009638,73.66644815734435,87.69872022042708,16843820.68003125,51.91755261888863,43.95255639043637,1000.0,256.0,128.0,16.429116481604975,21.834959085378383 21,22.19124956458528,19.173978932074554,23.075291137041667,4204638.55315625,47.84723968883448,39.67141789251325,1000.0,512.0,64.0,17.187381883294037,18.132954438553686 22,74.4383482353613,62.73944108333813,77.02295967070833,14185576.053156251,49.269650020278206,41.0114093774376,1000.0,512.0,96.0,20.790522147394288,20.92657622016308 23,176.10346493800654,147.08236289834664,174.80688687560416,33622138.55315625,73.57784025029191,45.49651504209931,1000.0,512.0,128.0,21.001374894095918,21.694538484423596 24,48.54785036337131,38.17522567742583,46.96365568321875,8401086.79378125,77.62539974192568,60.831822566769915,1000.0,1024.0,64.0,27.50661081606833,19.248749318142803 25,162.93364576511175,125.28141411553202,150.54997028079168,28343461.79378125,80.98162277035146,49.60976001689607,1000.0,1024.0,96.0,28.81203760084329,19.511240434595564 26,385.37011631330097,293.91828892976025,351.66473063015627,67178649.29378125,117.02369439840291,52.677613768154345,1000.0,1024.0,128.0,30.867998998900152,22.073089282079582 ,all to all,perCall to all,real exclusive,real call,vs all to all,vs perCall to all,process,iteration,size,weighted all,weighted perCall 0,3.9193650504750863,3.5627250909405053,4.129666003072916,2106369.137561035,33.03513319577337,35.8312710514823,512.0,256.0,64.0,20.74299610609404,19.959975968077426 1,13.114371695548254,11.462402301967256,14.749491093083332,7106556.637561034,43.46161968793186,37.63318659334597,512.0,256.0,96.0,27.631758493085357,27.3352828786892 2,31.020158292806975,26.597047478174648,35.74392863788542,16843775.387561034,61.32428776819555,44.530960698919245,512.0,256.0,128.0,33.29148279558514,33.64580661546467 3,8.713425955234236,7.0863780416345445,8.229332755968752,4204548.075061034,35.54275816866049,56.707941767200815,512.0,512.0,64.0,32.149902642635524,19.9660936835381 4,29.25497442074865,22.87180068370394,29.86740795458334,14185485.575061036,50.78109583579993,42.29548728236925,512.0,512.0,96.0,38.626849250725286,27.92584317326976 5,69.25651630699917,53.11209336731611,71.75545987753125,33622048.07506103,72.43028576527705,59.47950831660272,512.0,512.0,128.0,43.50945201914712,33.60393253550947 6,21.126701856848847,14.139320326223341,16.752916127864584,8400905.950061036,52.64539156573753,107.86259417360145,512.0,1024.0,64.0,55.40986864578554,21.430933614661548 7,71.02739366123484,45.7016446230198,59.08399127064583,28343280.950061034,68.8566544250602,107.17690574090778,512.0,1024.0,96.0,59.68041156080999,27.542671060233797 8,168.2017202741846,106.16151408815065,143.08803279686458,67178468.45006104,102.90053255158602,117.75080155997269,512.0,1024.0,128.0,64.54574492226224,33.72030166712323 9,3.919445980294607,3.5620855607488795,4.470895353062501,2106394.114417867,28.337839200983645,33.31654160280843,729.0,256.0,64.0,19.142831052162933,21.792942027190946 10,13.114452693681553,11.4618143514279,14.86478275171875,7106581.614417867,46.33556420939651,40.23889902711741,729.0,256.0,96.0,27.847072458856,27.522685196478818 11,31.020239423969844,26.59655997222129,35.715866194041666,16843800.36441787,63.040293205839326,43.2292196536778,729.0,256.0,128.0,33.352645253286134,33.77857174767026 12,8.713506885053759,7.085756859042122,8.631676836229166,4204597.968792867,32.98753867140823,46.29985373714845,729.0,512.0,64.0,29.016446155538794,19.8627697401154 13,29.255055418881952,22.8712691002586,30.057959758927087,14185535.468792867,50.99038984567652,42.40075161694834,729.0,512.0,96.0,38.743318693999264,28.098066905932214 14,69.25659743816206,53.11173626642036,71.56764745880209,33622097.96879286,76.38371664113916,53.27036086579582,729.0,512.0,128.0,43.69730071398402,33.82914887910738 15,21.12678278666837,14.138727817658623,16.88281177351042,8401005.681292867,48.95799489003571,101.21595259533208,729.0,1024.0,64.0,50.1517739462712,18.097539337903015 16,71.02747465936814,45.70121775699914,60.05138731569791,28343380.68129287,68.1944256251386,108.78202072822447,729.0,1024.0,96.0,59.83213579517762,28.208945115138505 17,168.20180140534745,106.16140978918948,143.84909536218748,67178568.18129286,99.47995100625835,73.51745301813607,729.0,1024.0,128.0,64.30100707704219,33.69587258655824 18,3.9202046519562193,3.561675970290428,4.377718367802083,2106414.43003125,28.275865659897796,33.86424685084835,1000.0,256.0,64.0,17.709084435526226,20.27572422311563 19,13.115211409023686,11.461437741522039,15.337157404572915,7106601.93003125,40.035304403919326,38.153890169480235,1000.0,256.0,96.0,28.767565685681113,28.708201903182744 20,31.020998224372434,26.596247587602043,36.279199431052085,16843820.68003125,61.21286496045806,43.46128136542685,1000.0,256.0,128.0,33.72820602404703,34.07014799307199 21,8.714265556715368,7.08535900094654,8.668155767145834,4204638.55315625,36.3640714227881,47.25396923396612,1000.0,512.0,64.0,32.80962789266332,19.992637932307467 22,29.25581413422408,22.87092853276604,30.877772213312497,14185576.053156251,49.03844910558851,45.953219636374385,1000.0,512.0,96.0,39.50625321798285,29.16820670962302 23,69.25735623856464,53.111507264838956,72.3799390005,33622138.55315625,71.82952633252792,48.82069879725345,1000.0,512.0,128.0,43.82367513571072,34.00641063896023 24,21.12754145832998,14.138348294388027,17.585509895614585,8401086.79378125,45.92734540628097,100.9387766416295,1000.0,1024.0,64.0,50.567380831185126,21.253764969989863 25,71.02823337471028,45.70094414725054,60.735022405062494,28343461.79378125,66.11471273602014,105.33127016716732,1000.0,1024.0,96.0,59.71322678328758,28.463254338695744 26,168.20256020575005,106.16134243208899,145.37338692223958,67178649.29378125,98.42000324945845,76.18677336172527,1000.0,1024.0,128.0,64.50711017592604,34.16517700761053
# print(resultDF_in_fitness.dtypes)
# resultDF_in_fitness = resultDF_in_fitness.astype(
# {"vs _all": float, "vs _perCall": float, "_call": float}
# )
# fig = px.scatter(resultDF_in_fitness, x="_call", y="vs _perCall")
# fig.show()
resultDF_ex_fitness = resultDF_ex_fitness.astype(
{"vs _all": float, "vs _perCall": float, "_call": float}
)
fig = px.scatter(resultDF_ex_fitness, x="_call", y="vs _perCall")
fig.show()
# exclusive, モデル適合度
_list_series: list[pd.Series] = []
for functionName in functionNames_lulesh:
_list_series_oneCase: list[pd.Series] = []
for elem_process in train_lulesh_processes:
for elem_iteration in train_lulesh_iterations:
for elem_size in train_lulesh_sizes:
target_env_oneCase = [
(dict_symbols_lulesh["size"], elem_size),
(dict_symbols_lulesh["iteration"], elem_iteration),
(dict_symbols_lulesh["process"], elem_process),
]
# 全体
_all: float = (
dict_models_lulesh_all[functionName]
.subs(target_env_oneCase)
.evalf()
)
# 1コール当たり
_perCall: float = (
dict_models_lulesh_perCall[functionName]
.subs(target_env_oneCase)
.evalf()
)
# コール回数
_call: float = (
dict_models_lulesh_call[functionName]
.subs(target_env_oneCase)
.evalf()
)
target_lulesh_DF: pd.DataFrame = trainDF_lulesh[
(trainDF_lulesh["Name"] == functionName)
& (trainDF_lulesh["process"] == elem_process)
& (trainDF_lulesh["iteration"] == elem_iteration)
& (trainDF_lulesh["size"] == elem_size)
]
target_lulesh_DF = target_lulesh_DF.reset_index()
# 実測値
_real_exclusive: float = target_lulesh_DF.loc[0][resVar_all]
_real_call: float = target_lulesh_DF.loc[0][resVar_call]
_tmp_series: pd.Series = pd.Series(dtype="object")
_tmp_series["Name"] = functionName
_tmp_series["all to all"] = _all
_tmp_series["perCall to all"] = _perCall * _call
_tmp_series["real exclusive"] = _real_exclusive
_tmp_series["real call"] = _real_call
_list_series_oneCase.append(_tmp_series)
resultDF: pd.DataFrame = pd.DataFrame(data=_list_series_oneCase)
resultDF = add_relativeErrorRateCol(
inputDF=resultDF,
real_colName="real exclusive",
predicted_colName="all to all",
targetColName="vs all to all",
)
resultDF = add_relativeErrorRateCol(
inputDF=resultDF,
real_colName="real exclusive",
predicted_colName="perCall to all",
targetColName="vs perCall to all",
)
resultDF = resultDF.astype(
{
"all to all": float,
"perCall to all": float,
"real exclusive": float,
"real call": float,
"vs all to all": float,
"vs perCall to all": float,
}
)
_tmp_list_series: pd.Series = resultDF.mean(numeric_only=True)
_tmp_list_series["Name"] = functionName
_list_series.append(_tmp_list_series)
resultDF_ex_fitness: pd.DataFrame = pd.DataFrame(_list_series)
resultDF_ex_fitness
| all to all | perCall to all | real exclusive | real call | vs all to all | vs perCall to all | Name | |
|---|---|---|---|---|---|---|---|
| 0 | 3.587083e-06 | 3.611250e-06 | 3.587083e-06 | 1.000000e+00 | 4.494972 | 4.529864 | .TAU_application |
| 1 | 4.656926e-01 | 4.998763e-01 | 4.656926e-01 | 4.860000e+01 | 64.186959 | 61.089047 | MPI_Allreduce() |
| 2 | 8.163306e-04 | 8.869008e-04 | 8.163306e-04 | 1.000000e+00 | 375.845370 | 413.759584 | MPI_Barrier() |
| 3 | 1.959725e-04 | 2.089635e-04 | 1.959725e-04 | 4.514000e+02 | 13.913296 | 21.117243 | MPI_Comm_rank() |
| 4 | 4.641972e-07 | 4.599250e-07 | 4.641972e-07 | 1.000000e+00 | 14.603987 | 14.554590 | MPI_Comm_size() |
| 5 | 2.341597e+00 | 1.864908e+00 | 2.341597e+00 | 1.000000e+00 | 58.939041 | 76.746281 | MPI_Finalize() |
| 6 | 4.930194e-01 | 4.953750e-01 | 4.930194e-01 | 1.000000e+00 | 22.840952 | 22.984320 | MPI_Init() |
| 7 | 8.281572e-04 | 8.888162e-04 | 8.281572e-04 | 1.310194e+03 | 29.905130 | 34.624772 | MPI_Irecv() |
| 8 | 8.510761e-03 | 8.991201e-03 | 8.510761e-03 | 1.310194e+03 | 194.124650 | 173.789329 | MPI_Isend() |
| 9 | 1.277368e-03 | 1.195829e-03 | 1.277368e-03 | 1.000000e+00 | 680.716426 | 609.283209 | MPI_Reduce() |
| 10 | 7.208439e-02 | 7.559656e-02 | 7.208439e-02 | 1.310194e+03 | 637.536923 | 676.371267 | MPI_Wait() |
| 11 | 2.359443e-01 | 2.651487e-01 | 2.359443e-01 | 1.498000e+02 | 238.412718 | 229.118919 | MPI_Waitall() |
| 12 | 3.101924e-01 | 3.055593e-01 | 3.101924e-01 | 2.040194e+06 | 16.134983 | 15.743301 | Real_t_CalcElemVolume(const |
| 13 | 1.918167e-06 | 1.896250e-06 | 1.918167e-06 | 2.000000e+00 | 4.813321 | 4.558068 | StrToInt |
| 14 | 1.996847e+00 | 1.984633e+00 | 1.996847e+00 | 1.000000e+00 | 7.036762 | 13.104779 | int_main(int_char_**) |
| 15 | 4.425535e-01 | 4.260046e-01 | 4.425535e-01 | 4.960000e+01 | 63.548398 | 16.200636 | void_CalcKinematicsForElems(Domain |
| 16 | 5.124423e-03 | 3.397645e-03 | 5.124423e-03 | 4.960000e+01 | 55.767147 | 37.614828 | void_CommMonoQ(Domain |
| 17 | 5.466008e-04 | 3.667988e-04 | 5.466008e-04 | 1.498000e+02 | 189.180976 | 22.339178 | void_CommRecv(Domain |
| 18 | 9.188817e-03 | 3.892476e-03 | 9.188817e-03 | 5.060000e+01 | 411.382561 | 39.753054 | void_CommSBN(Domain |
| 19 | 7.149106e-02 | 1.618499e-02 | 7.149106e-02 | 1.498000e+02 | 847.548282 | 54.300345 | void_CommSend(Domain |
| 20 | 2.103545e-02 | 1.281131e-02 | 2.103545e-02 | 4.960000e+01 | 147.489721 | 83.518617 | void_CommSyncPosVel(Domain |
| 21 | 5.171553e-04 | 4.756567e-04 | 5.171553e-04 | 1.000000e+00 | 25.108523 | 29.898369 | void_Domain::BuildMesh(Int_t_Int_t_Int_t) |
| 22 | 4.043950e-04 | 4.160833e-04 | 4.043950e-04 | 1.000000e+00 | 9.228406 | 9.643183 | void_Domain::CreateRegionIndexSets(Int_t_Int_t) |
| 23 | 1.408947e-02 | 1.435833e-02 | 1.408948e-02 | 1.000000e+00 | 29.694414 | 23.957419 | void_Domain::Domain(Int_t_Index_t_Index_t_Inde... |
| 24 | 8.139061e-05 | 7.854017e-05 | 8.139061e-05 | 1.000000e+00 | 61.170717 | 56.710331 | void_Domain::SetupBoundaryConditions(Int_t) |
| 25 | 3.404347e-04 | 3.449475e-04 | 3.404347e-04 | 1.000000e+00 | 25.141755 | 25.130508 | void_Domain::SetupCommBuffers(Int_t) |
| 26 | 3.176192e-04 | 3.211900e-04 | 3.176192e-04 | 1.000000e+00 | 4.971856 | 5.742696 | void_Domain::SetupElementConnectivities(Int_t) |
| 27 | 2.775200e-06 | 2.776750e-06 | 2.775200e-06 | 1.000000e+00 | 6.611437 | 6.463983 | void_Domain::SetupSymmetryPlanes(Int_t) |
| 28 | 5.853344e-05 | 5.811650e-05 | 5.853344e-05 | 1.000000e+00 | 587.887615 | 591.632391 | void_Domain::~Domain() |
| 29 | 1.127706e-05 | 1.127233e-05 | 1.127706e-05 | 1.000000e+00 | 5.037710 | 5.035600 | void_InitMeshDecomp(Int_t_Int_t_Int_t |
| 30 | 2.085278e-06 | 2.060583e-06 | 2.085278e-06 | 1.000000e+00 | 25.389755 | 24.495431 | void_ParseCommandLineOptions(int_char_**_Int_t... |
| 31 | 2.742558e-06 | 2.827912e-06 | 2.742558e-06 | 3.220118e-02 | 6.014462 | 6.400693 | void_VerifyAndWriteFinalOutput(Real_t_Domain |
print(resultDF_ex_fitness.to_csv())
,all to all,perCall to all,real exclusive,real call,vs all to all,vs perCall to all,Name 0,3.5870833333333345e-06,3.6112499999999944e-06,3.5870833333333332e-06,1.0,4.49497172030504,4.529863722075408,.TAU_application 1,0.4656926444455586,0.49987631194890925,0.4656926444444444,48.6,64.18695938041436,61.08904659123899,MPI_Allreduce() 2,0.0008163305555555552,0.0008869008333333322,0.0008163305555555556,1.0,375.84537038593464,413.75958373384805,MPI_Barrier() 3,0.00019597249999999986,0.00020896345164618952,0.00019597250000000002,451.4,13.913296492896276,21.117242604652933,MPI_Comm_rank() 4,4.641972222222224e-07,4.5992499999999945e-07,4.6419722222222224e-07,1.0,14.603986505879087,14.554590269120544,MPI_Comm_size() 5,2.3415972222222217,1.8649083333325853,2.341597222222222,1.0,58.9390413018782,76.74628114262062,MPI_Finalize() 6,0.4930194444444449,0.4953749999999999,0.49301944444444445,1.0,22.84095182616433,22.984320327785227,MPI_Init() 7,0.0008281572222222218,0.000888816204379018,0.0008281572222222223,1310.1943333333334,29.90513035960323,34.62477168068254,MPI_Irecv() 8,0.008510761111111062,0.008991201163332822,0.00851076111111111,1310.1943333333334,194.1246496851199,173.78932859192264,MPI_Isend() 9,0.001277368055555555,0.0011958291666666653,0.0012773680555555555,1.0,680.7164258821371,609.2832085819716,MPI_Reduce() 10,0.07208439194444444,0.07559656193233581,0.07208439194444445,1310.1943333333334,637.5369229766028,676.3712674322157,MPI_Wait() 11,0.23594427222231978,0.2651486611378626,0.23594427222222222,149.8,238.4127177258358,229.11891904337725,MPI_Waitall() 12,0.31019236388881327,0.3055593054414882,0.3101923638888889,2040193.5,16.134982581537752,15.74330090561876,Real_t_CalcElemVolume(const 13,1.918166666666667e-06,1.8962499999999975e-06,1.9181666666666667e-06,2.0,4.813320856564633,4.558067546197548,StrToInt 14,1.9968472222222227,1.9846333333333317,1.9968472222222222,1.0,7.036761534230096,13.104779042937851,int_main(int_char_**) 15,0.44255354722222234,0.4260045833333333,0.44255354722222223,49.6,63.54839751213876,16.200636428200706,void_CalcKinematicsForElems(Domain 16,0.005124422777779533,0.0033976450985192734,0.005124422777777778,49.6,55.767147199354824,37.61482753419218,void_CommMonoQ(Domain 17,0.000546600833333333,0.0003667987687112887,0.0005466008333333332,149.8,189.18097607176196,22.339178335592205,void_CommRecv(Domain 18,0.009188817222222223,0.0038924756795904623,0.009188817222222223,50.6,411.3825610915216,39.75305364159599,void_CommSBN(Domain 19,0.07149106388888887,0.016184991152118418,0.07149106388888889,149.8,847.5482819714033,54.300344562875615,void_CommSend(Domain 20,0.021035447222222222,0.012811309257011775,0.021035447222222222,49.6,147.48972108475215,83.518617100871,void_CommSyncPosVel(Domain 21,0.0005171552777777776,0.00047565666666666575,0.0005171552777777778,1.0,25.108522548994234,29.898369026127284,void_Domain::BuildMesh(Int_t_Int_t_Int_t) 22,0.00040439499999994334,0.00041608333333320954,0.0004043950000000001,1.0,9.228405744946002,9.643183299008875,void_Domain::CreateRegionIndexSets(Int_t_Int_t) 23,0.014089474999999995,0.014358333333333221,0.014089475,1.0,29.694413955518637,23.95741877715,void_Domain::Domain(Int_t_Index_t_Index_t_Index_t_Index_t_Int_t_Int_t_Int_t_Int_t) 24,8.139061111461348e-05,7.854016667015599e-05,8.139061111111112e-05,1.0,61.17071685512961,56.710330624974965,void_Domain::SetupBoundaryConditions(Int_t) 25,0.00034043472222222216,0.0003449474999999997,0.00034043472222222216,1.0,25.141754505135584,25.130508415523774,void_Domain::SetupCommBuffers(Int_t) 26,0.0003176191666666666,0.0003211899999999997,0.0003176191666666667,1.0,4.97185554826168,5.742695863289117,void_Domain::SetupElementConnectivities(Int_t) 27,2.7751999999999993e-06,2.7767499999999963e-06,2.7752e-06,1.0,6.611437460710096,6.463982656264216,void_Domain::SetupSymmetryPlanes(Int_t) 28,5.8533444444444365e-05,5.811649999999982e-05,5.853344444444444e-05,1.0,587.8876152326413,591.6323906857891,void_Domain::~Domain() 29,1.1277055555555564e-05,1.1272333333333327e-05,1.1277055555555559e-05,1.0,5.037709611570846,5.035600090680422,void_InitMeshDecomp(Int_t_Int_t_Int_t 30,2.085277777777778e-06,2.0605833333333323e-06,2.085277777777778e-06,1.0,25.389755169599674,24.495431404947393,void_ParseCommandLineOptions(int_char_**_Int_t_cmdLineOpts 31,2.7425583333333326e-06,2.827912142614843e-06,2.7425583333333335e-06,0.03220118000000001,6.014462193451478,6.400693054090221,void_VerifyAndWriteFinalOutput(Real_t_Domain
resultDF_ex_fitness.mean()
/tmp/ipykernel_121/3761618132.py:1: FutureWarning: The default value of numeric_only in DataFrame.mean is deprecated. In a future version, it will default to False. In addition, specifying 'numeric_only=None' is deprecated. Select only valid columns or specify the value of numeric_only to silence this warning.
all to all 0.202899 perCall to all 0.186938 real exclusive 0.202899 real call 63915.372350 vs all to all 152.021226 vs perCall to all 106.569120 dtype: float64
print(resultDF_in_fitness.to_csv())
,all to all,perCall to all,real inclusive,real call,vs all to all,vs perCall to all,Name 0,6.499274999999998,5.99680000000455,6.499275,1.0,18.531207791142045,47.868233037072244,.TAU_application 1,0.4851583333338704,0.49987631194890925,0.4851583333333334,48.6,70.02850227605273,54.30365103330267,MPI_Allreduce() 2,0.0008691769444444439,0.0008869008333333322,0.0008691769444444445,1.0,396.74788673794706,409.61022416914784,MPI_Barrier() 3,0.00019597805555555544,0.00020896345164618952,0.00019597805555555557,451.4,13.912199957407852,21.113673856714986,MPI_Comm_rank() 4,4.641972222222224e-07,4.5992499999999945e-07,4.6419722222222224e-07,1.0,14.603986505879087,14.554590269120544,MPI_Comm_size() 5,2.350408333333333,1.8649083333325853,2.350408333333333,1.0,57.047656270041564,72.38078156462822,MPI_Finalize() 6,0.5034055555555559,0.4953749999999999,0.5034055555555556,1.0,19.225513434065896,18.808968818305168,MPI_Init() 7,0.0008598322222222225,0.000888816204379018,0.0008598322222222223,1310.1943333333334,30.815302940609747,33.88940863615063,MPI_Irecv() 8,0.010041902777777827,0.008991201163332822,0.010041902777777778,1310.1943333333334,196.52093502405054,168.8005687628724,MPI_Isend() 9,0.0013403763888888887,0.0011958291666666653,0.001340376388888889,1.0,711.2399128509621,608.3507686480746,MPI_Reduce() 10,0.0803010583333331,0.07559656193233581,0.08030105833333333,1310.1943333333334,670.2231152824589,593.3711312685786,MPI_Wait() 11,0.25203038333343813,0.2651486611378626,0.25203038333333333,149.8,235.4690990927873,227.9093300733319,MPI_Waitall() 12,0.3230555555555556,0.3055593054414882,0.32305555555555554,2040193.5,26.6534778405902,9.741669563749706,Real_t_CalcElemVolume(const 13,1.918166666666667e-06,1.8962499999999975e-06,1.9181666666666667e-06,2.0,4.813320856564633,4.558067546197548,StrToInt 14,6.4992722222222215,5.99680000000455,6.4992722222222215,1.0,18.531234658512858,47.86843209407313,int_main(int_char_**) 15,0.7321944444444437,0.7243828124999999,0.7321944444444444,49.6,20.14709621116764,8.70147828104974,void_CalcKinematicsForElems(Domain 16,0.019962760000000277,0.021199564416666674,0.019962760000000003,49.6,337.411413990948,587.2208886777314,void_CommMonoQ(Domain 17,0.0013260472222222223,0.0012621483763984467,0.0013260472222222225,149.8,28.323249555554177,27.54347875087964,void_CommRecv(Domain 18,0.032381750000000015,0.035455116610314086,0.03238175,50.6,653.7729035533267,647.3330877572415,void_CommSBN(Domain 19,0.29726666666666707,0.29954774215774066,0.2972666666666666,149.8,175.67952170188036,174.1534561960157,void_CommSend(Domain 20,0.051118394444444215,0.04868275385729218,0.05111839444444444,49.6,187.35303190142466,142.852550568504,void_CommSyncPosVel(Domain 21,0.0005212413888888888,0.00047565666666666575,0.000521241388888889,1.0,26.816747878454173,30.11944842766424,void_Domain::BuildMesh(Int_t_Int_t_Int_t) 22,0.0004200038888887566,0.0004166691666666678,0.000420003888888889,1.0,7.963391919754539,7.35237109953441,void_Domain::CreateRegionIndexSets(Int_t_Int_t) 23,0.02445429722222223,0.023516666666666592,0.02445429722222222,1.0,16.558679738181976,12.883915270762701,void_Domain::Domain(Int_t_Index_t_Index_t_Index_t_Index_t_Int_t_Int_t_Int_t_Int_t) 24,8.139061111461348e-05,7.854016667015599e-05,8.139061111111112e-05,1.0,61.17071685512961,56.710330624974965,void_Domain::SetupBoundaryConditions(Int_t) 25,0.00034736777777777774,0.0003449474999999997,0.00034736777777777774,1.0,22.790014098984237,22.831558767389716,void_Domain::SetupCommBuffers(Int_t) 26,0.00032199138888888896,0.0003211899999999997,0.0003219913888888889,1.0,5.643632463244711,5.133162906038845,void_Domain::SetupElementConnectivities(Int_t) 27,2.786811111111111e-06,2.7767499999999963e-06,2.7868111111111116e-06,1.0,6.538503805788273,6.346428561026772,void_Domain::SetupSymmetryPlanes(Int_t) 28,5.8533444444444365e-05,5.811649999999982e-05,5.853344444444444e-05,1.0,587.8876152326413,591.6323906857891,void_Domain::~Domain() 29,1.1277055555555564e-05,1.1272333333333327e-05,1.1277055555555559e-05,1.0,5.037709611570846,5.035600090680422,void_InitMeshDecomp(Int_t_Int_t_Int_t 30,3.947027777777779e-06,3.957999999999994e-06,3.947027777777778e-06,1.0,12.453268707970874,12.553922598018122,void_ParseCommandLineOptions(int_char_**_Int_t_cmdLineOpts 31,2.787308333333331e-06,2.827912142614843e-06,2.7873083333333333e-06,0.03220118000000001,9.054462425440855,5.655438325067181,void_VerifyAndWriteFinalOutput(Real_t_Domain
resultDF_in_fitness.mean()
/tmp/ipykernel_121/2420836859.py:1: FutureWarning: The default value of numeric_only in DataFrame.mean is deprecated. In a future version, it will default to False. In addition, specifying 'numeric_only=None' is deprecated. Select only valid columns or specify the value of numeric_only to silence this warning.
all to all 0.567709 perCall to all 0.520875 real inclusive 0.567709 real call 63915.372350 vs all to all 145.280166 vs perCall to all 146.162156 dtype: float64
# fig_ex_perCall = px.scatter(
# resultDF_ex_fitness,
# x="Name",
# y="vs _perCall",
# # size="_call",
# labels={
# "Name": "関数名",
# "vs _perCall": "MAPE",
# },
# hover_data=["_real_call"],
# )
# fig_ex_perCall.show()
# fig_ex_all = px.scatter(
# resultDF_ex_fitness,
# x="Name",
# y="vs _all",
# # size="_call",
# labels={
# "Name": "関数名",
# "vs _perCall": "MAPE",
# },
# hover_data=["_real_call"],
# )
# fig_ex_all.show()
# fig_in_perCall = px.scatter(
# resultDF_in_fitness,
# x="Name",
# y="vs _perCall",
# labels={
# "Name": "関数名",
# "vs _perCall": "MAPE",
# },
# hover_data=["_real_call"],
# )
# fig_in_perCall.show()
# fig_in_all = px.scatter(
# resultDF_in_fitness,
# x="Name",
# y="vs _all",
# labels={
# "Name": "関数名",
# "vs _perCall": "MAPE",
# },
# hover_data=["_real_call"],
# )
# fig_in_all.show()
print(resultDF_ex.mean())
print(resultDF_in.mean())
all to all 4.618193e+01 perCall to all 3.229901e+01 real exclusive 4.300393e+01 real call 2.022133e+07 vs all to all 5.677421e+01 vs perCall to all 6.264829e+01 process 7.470000e+02 iteration 5.973333e+02 size 9.600000e+01 weighted all 4.121500e+01 weighted perCall 2.741189e+01 dtype: float64 all to all 1.110029e+02 perCall to all 8.902083e+01 real inclusive 1.051859e+02 real call 2.022133e+07 vs all to all 6.576082e+01 vs perCall to all 4.601254e+01 process 7.470000e+02 iteration 5.973333e+02 size 9.600000e+01 weighted all 2.006257e+01 weighted perCall 1.873667e+01 dtype: float64
print(resultDF_ex.to_csv())
resultDF_ex
,all to all,perCall to all,real exclusive,real call,vs all to all,vs perCall to all,process,iteration,size,weighted all,weighted perCall 0,3.9193650504750863,3.5627250909405053,4.129666003072916,2106369.137561035,33.03513319577337,35.8312710514823,512.0,256.0,64.0,20.74299610609404,19.959975968077426 1,13.114371695548254,11.462402301967256,14.749491093083332,7106556.637561034,43.46161968793186,37.63318659334597,512.0,256.0,96.0,27.631758493085357,27.3352828786892 2,31.020158292806975,26.597047478174648,35.74392863788542,16843775.387561034,61.32428776819555,44.530960698919245,512.0,256.0,128.0,33.29148279558514,33.64580661546467 3,8.713425955234236,7.0863780416345445,8.229332755968752,4204548.075061034,35.54275816866049,56.707941767200815,512.0,512.0,64.0,32.149902642635524,19.9660936835381 4,29.25497442074865,22.87180068370394,29.86740795458334,14185485.575061036,50.78109583579993,42.29548728236925,512.0,512.0,96.0,38.626849250725286,27.92584317326976 5,69.25651630699917,53.11209336731611,71.75545987753125,33622048.07506103,72.43028576527705,59.47950831660272,512.0,512.0,128.0,43.50945201914712,33.60393253550947 6,21.126701856848847,14.139320326223341,16.752916127864584,8400905.950061036,52.64539156573753,107.86259417360145,512.0,1024.0,64.0,55.40986864578554,21.430933614661548 7,71.02739366123484,45.7016446230198,59.08399127064583,28343280.950061034,68.8566544250602,107.17690574090778,512.0,1024.0,96.0,59.68041156080999,27.542671060233797 8,168.2017202741846,106.16151408815065,143.08803279686458,67178468.45006104,102.90053255158602,117.75080155997269,512.0,1024.0,128.0,64.54574492226224,33.72030166712323 9,3.919445980294607,3.5620855607488795,4.470895353062501,2106394.114417867,28.337839200983645,33.31654160280843,729.0,256.0,64.0,19.142831052162933,21.792942027190946 10,13.114452693681553,11.4618143514279,14.86478275171875,7106581.614417867,46.33556420939651,40.23889902711741,729.0,256.0,96.0,27.847072458856,27.522685196478818 11,31.020239423969844,26.59655997222129,35.715866194041666,16843800.36441787,63.040293205839326,43.2292196536778,729.0,256.0,128.0,33.352645253286134,33.77857174767026 12,8.713506885053759,7.085756859042122,8.631676836229166,4204597.968792867,32.98753867140823,46.29985373714845,729.0,512.0,64.0,29.016446155538794,19.8627697401154 13,29.255055418881952,22.8712691002586,30.057959758927087,14185535.468792867,50.99038984567652,42.40075161694834,729.0,512.0,96.0,38.743318693999264,28.098066905932214 14,69.25659743816206,53.11173626642036,71.56764745880209,33622097.96879286,76.38371664113916,53.27036086579582,729.0,512.0,128.0,43.69730071398402,33.82914887910738 15,21.12678278666837,14.138727817658623,16.88281177351042,8401005.681292867,48.95799489003571,101.21595259533208,729.0,1024.0,64.0,50.1517739462712,18.097539337903015 16,71.02747465936814,45.70121775699914,60.05138731569791,28343380.68129287,68.1944256251386,108.78202072822447,729.0,1024.0,96.0,59.83213579517762,28.208945115138505 17,168.20180140534745,106.16140978918948,143.84909536218748,67178568.18129286,99.47995100625835,73.51745301813607,729.0,1024.0,128.0,64.30100707704219,33.69587258655824 18,3.9202046519562193,3.561675970290428,4.377718367802083,2106414.43003125,28.275865659897796,33.86424685084835,1000.0,256.0,64.0,17.709084435526226,20.27572422311563 19,13.115211409023686,11.461437741522039,15.337157404572915,7106601.93003125,40.035304403919326,38.153890169480235,1000.0,256.0,96.0,28.767565685681113,28.708201903182744 20,31.020998224372434,26.596247587602043,36.279199431052085,16843820.68003125,61.21286496045806,43.46128136542685,1000.0,256.0,128.0,33.72820602404703,34.07014799307199 21,8.714265556715368,7.08535900094654,8.668155767145834,4204638.55315625,36.3640714227881,47.25396923396612,1000.0,512.0,64.0,32.80962789266332,19.992637932307467 22,29.25581413422408,22.87092853276604,30.877772213312497,14185576.053156251,49.03844910558851,45.953219636374385,1000.0,512.0,96.0,39.50625321798285,29.16820670962302 23,69.25735623856464,53.111507264838956,72.3799390005,33622138.55315625,71.82952633252792,48.82069879725345,1000.0,512.0,128.0,43.82367513571072,34.00641063896023 24,21.12754145832998,14.138348294388027,17.585509895614585,8401086.79378125,45.92734540628097,100.9387766416295,1000.0,1024.0,64.0,50.567380831185126,21.253764969989863 25,71.02823337471028,45.70094414725054,60.735022405062494,28343461.79378125,66.11471273602014,105.33127016716732,1000.0,1024.0,96.0,59.71322678328758,28.463254338695744 26,168.20256020575005,106.16134243208899,145.37338692223958,67178649.29378125,98.42000324945845,76.18677336172527,1000.0,1024.0,128.0,64.50711017592604,34.16517700761053
| all to all | perCall to all | real exclusive | real call | vs all to all | vs perCall to all | process | iteration | size | weighted all | weighted perCall | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 3.919365 | 3.562725 | 4.129666 | 2.106369e+06 | 33.035133 | 35.831271 | 512.0 | 256.0 | 64.0 | 20.742996 | 19.959976 |
| 1 | 13.114372 | 11.462402 | 14.749491 | 7.106557e+06 | 43.461620 | 37.633187 | 512.0 | 256.0 | 96.0 | 27.631758 | 27.335283 |
| 2 | 31.020158 | 26.597047 | 35.743929 | 1.684378e+07 | 61.324288 | 44.530961 | 512.0 | 256.0 | 128.0 | 33.291483 | 33.645807 |
| 3 | 8.713426 | 7.086378 | 8.229333 | 4.204548e+06 | 35.542758 | 56.707942 | 512.0 | 512.0 | 64.0 | 32.149903 | 19.966094 |
| 4 | 29.254974 | 22.871801 | 29.867408 | 1.418549e+07 | 50.781096 | 42.295487 | 512.0 | 512.0 | 96.0 | 38.626849 | 27.925843 |
| 5 | 69.256516 | 53.112093 | 71.755460 | 3.362205e+07 | 72.430286 | 59.479508 | 512.0 | 512.0 | 128.0 | 43.509452 | 33.603933 |
| 6 | 21.126702 | 14.139320 | 16.752916 | 8.400906e+06 | 52.645392 | 107.862594 | 512.0 | 1024.0 | 64.0 | 55.409869 | 21.430934 |
| 7 | 71.027394 | 45.701645 | 59.083991 | 2.834328e+07 | 68.856654 | 107.176906 | 512.0 | 1024.0 | 96.0 | 59.680412 | 27.542671 |
| 8 | 168.201720 | 106.161514 | 143.088033 | 6.717847e+07 | 102.900533 | 117.750802 | 512.0 | 1024.0 | 128.0 | 64.545745 | 33.720302 |
| 9 | 3.919446 | 3.562086 | 4.470895 | 2.106394e+06 | 28.337839 | 33.316542 | 729.0 | 256.0 | 64.0 | 19.142831 | 21.792942 |
| 10 | 13.114453 | 11.461814 | 14.864783 | 7.106582e+06 | 46.335564 | 40.238899 | 729.0 | 256.0 | 96.0 | 27.847072 | 27.522685 |
| 11 | 31.020239 | 26.596560 | 35.715866 | 1.684380e+07 | 63.040293 | 43.229220 | 729.0 | 256.0 | 128.0 | 33.352645 | 33.778572 |
| 12 | 8.713507 | 7.085757 | 8.631677 | 4.204598e+06 | 32.987539 | 46.299854 | 729.0 | 512.0 | 64.0 | 29.016446 | 19.862770 |
| 13 | 29.255055 | 22.871269 | 30.057960 | 1.418554e+07 | 50.990390 | 42.400752 | 729.0 | 512.0 | 96.0 | 38.743319 | 28.098067 |
| 14 | 69.256597 | 53.111736 | 71.567647 | 3.362210e+07 | 76.383717 | 53.270361 | 729.0 | 512.0 | 128.0 | 43.697301 | 33.829149 |
| 15 | 21.126783 | 14.138728 | 16.882812 | 8.401006e+06 | 48.957995 | 101.215953 | 729.0 | 1024.0 | 64.0 | 50.151774 | 18.097539 |
| 16 | 71.027475 | 45.701218 | 60.051387 | 2.834338e+07 | 68.194426 | 108.782021 | 729.0 | 1024.0 | 96.0 | 59.832136 | 28.208945 |
| 17 | 168.201801 | 106.161410 | 143.849095 | 6.717857e+07 | 99.479951 | 73.517453 | 729.0 | 1024.0 | 128.0 | 64.301007 | 33.695873 |
| 18 | 3.920205 | 3.561676 | 4.377718 | 2.106414e+06 | 28.275866 | 33.864247 | 1000.0 | 256.0 | 64.0 | 17.709084 | 20.275724 |
| 19 | 13.115211 | 11.461438 | 15.337157 | 7.106602e+06 | 40.035304 | 38.153890 | 1000.0 | 256.0 | 96.0 | 28.767566 | 28.708202 |
| 20 | 31.020998 | 26.596248 | 36.279199 | 1.684382e+07 | 61.212865 | 43.461281 | 1000.0 | 256.0 | 128.0 | 33.728206 | 34.070148 |
| 21 | 8.714266 | 7.085359 | 8.668156 | 4.204639e+06 | 36.364071 | 47.253969 | 1000.0 | 512.0 | 64.0 | 32.809628 | 19.992638 |
| 22 | 29.255814 | 22.870929 | 30.877772 | 1.418558e+07 | 49.038449 | 45.953220 | 1000.0 | 512.0 | 96.0 | 39.506253 | 29.168207 |
| 23 | 69.257356 | 53.111507 | 72.379939 | 3.362214e+07 | 71.829526 | 48.820699 | 1000.0 | 512.0 | 128.0 | 43.823675 | 34.006411 |
| 24 | 21.127541 | 14.138348 | 17.585510 | 8.401087e+06 | 45.927345 | 100.938777 | 1000.0 | 1024.0 | 64.0 | 50.567381 | 21.253765 |
| 25 | 71.028233 | 45.700944 | 60.735022 | 2.834346e+07 | 66.114713 | 105.331270 | 1000.0 | 1024.0 | 96.0 | 59.713227 | 28.463254 |
| 26 | 168.202560 | 106.161342 | 145.373387 | 6.717865e+07 | 98.420003 | 76.186773 | 1000.0 | 1024.0 | 128.0 | 64.507110 | 34.165177 |
print(resultDF_in.to_csv())
resultDF_in
,all to all,perCall to all,real inclusive,real call,vs all to all,vs perCall to all,process,iteration,size,weighted all,weighted perCall 0,10.611351930359527,9.676474217800424,10.839249277552083,2106369.137561035,37.29268669015393,35.43018723269541,512.0,256.0,64.0,7.737989842121091,11.677584614814636 1,35.47642502959257,31.471554773470167,36.179501466729164,7106556.637561034,38.620857939519006,38.064344663643865,512.0,256.0,96.0,12.18557072646931,16.879060132916607 2,83.87770766424927,73.6674641556908,85.97173067903124,16843775.387561034,54.54402041982698,45.268959323177626,512.0,256.0,128.0,15.372071463442103,20.704699677786284 3,22.158231473484413,19.17506225333905,21.59216604190625,4204548.075061034,49.47031161730601,44.051874013721005,512.0,512.0,64.0,12.806894990419677,12.086386051975106 4,74.31459919508686,62.74050156199445,73.69767874593751,14185485.575061036,54.582365471743245,42.422740989603575,512.0,512.0,96.0,18.343713967012658,18.27624453544423 5,175.80302931250344,147.08337889402918,172.9344806705521,33622048.07506103,73.60662845024501,45.30363450313307,512.0,512.0,128.0,20.484699194282967,21.012191216686908 6,48.47662976735646,38.17630899735836,44.16693691421875,8400905.950061036,80.89637897677085,63.477555273759606,512.0,1024.0,64.0,24.250173404713387,14.151127994233732 7,162.6809632707526,125.28247459285637,145.12827248022916,28343280.950061034,89.5643980680369,51.25459148591234,512.0,1024.0,96.0,27.234582765993686,17.369564854515755 8,384.76406064848595,293.91930492411086,344.3190848386354,67178468.45006104,127.67407578608183,53.889614344304164,512.0,1024.0,128.0,30.057984088875145,20.883720467560195 9,10.619840860810292,9.675813824447374,12.003718211395832,2106394.114417867,36.40421419306993,37.32751689271612,729.0,256.0,64.0,15.376220620392743,20.44262556548373 10,35.51258578756824,31.470908313548193,36.52402229557292,7106581.614417867,38.62685545407163,39.60908282616979,729.0,256.0,96.0,12.59448709298471,17.36463000784385 11,83.96775566529726,73.6668448292925,85.82688698654167,16843800.36441787,60.144996553270715,47.124121822515775,729.0,256.0,128.0,15.207500739598695,20.652246235200828 12,22.17837169973441,19.17440186117058,22.966624707375,4204597.968792867,48.67331304789317,39.509350635350664,729.0,512.0,64.0,16.78093243205558,17.16293151612092 13,74.39008307638494,62.73985510325706,74.22244930017709,14185535.468792867,53.314671581624665,41.36237651450493,729.0,512.0,96.0,18.60216198192579,18.647579257837172 14,175.9862876799453,147.08275956881548,172.14807450036457,33622097.96879286,79.30598062379737,48.371852621472414,729.0,512.0,128.0,20.222788208640875,20.8731575283828 15,48.52007258520491,38.17564860578217,44.713030477781246,8401005.681292867,79.89437050531198,59.37217045764684,729.0,1024.0,64.0,25.17095190358091,16.156161021115857 16,162.83509339869548,125.28182813471128,148.1867310167396,28343380.68129287,83.9650752478088,52.108528917455544,729.0,1024.0,96.0,28.213288745997843,18.6858168230563 17,385.13373974871547,293.9186855994894,347.00953282354175,67178568.18129286,118.94803111396571,53.259493741196465,729.0,1024.0,128.0,30.140737908230065,21.168359233315538 18,10.625268769003398,9.675390893871992,11.676582892072915,2106414.43003125,37.71706213556318,37.35015401255731,1000.0,256.0,64.0,13.03755565649311,18.212172234343676 19,35.535707342824665,31.470494292149905,38.129688612802084,7106601.93003125,34.05282840903999,34.52943690409282,1000.0,256.0,96.0,15.27394240214445,20.061783492132943 20,84.02533327009638,73.66644815734435,87.69872022042708,16843820.68003125,51.91755261888863,43.95255639043637,1000.0,256.0,128.0,16.429116481604975,21.834959085378383 21,22.19124956458528,19.173978932074554,23.075291137041667,4204638.55315625,47.84723968883448,39.67141789251325,1000.0,512.0,64.0,17.187381883294037,18.132954438553686 22,74.4383482353613,62.73944108333813,77.02295967070833,14185576.053156251,49.269650020278206,41.0114093774376,1000.0,512.0,96.0,20.790522147394288,20.92657622016308 23,176.10346493800654,147.08236289834664,174.80688687560416,33622138.55315625,73.57784025029191,45.49651504209931,1000.0,512.0,128.0,21.001374894095918,21.694538484423596 24,48.54785036337131,38.17522567742583,46.96365568321875,8401086.79378125,77.62539974192568,60.831822566769915,1000.0,1024.0,64.0,27.50661081606833,19.248749318142803 25,162.93364576511175,125.28141411553202,150.54997028079168,28343461.79378125,80.98162277035146,49.60976001689607,1000.0,1024.0,96.0,28.81203760084329,19.511240434595564 26,385.37011631330097,293.91828892976025,351.66473063015627,67178649.29378125,117.02369439840291,52.677613768154345,1000.0,1024.0,128.0,30.867998998900152,22.073089282079582
| all to all | perCall to all | real inclusive | real call | vs all to all | vs perCall to all | process | iteration | size | weighted all | weighted perCall | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 10.611352 | 9.676474 | 10.839249 | 2.106369e+06 | 37.292687 | 35.430187 | 512.0 | 256.0 | 64.0 | 7.737990 | 11.677585 |
| 1 | 35.476425 | 31.471555 | 36.179501 | 7.106557e+06 | 38.620858 | 38.064345 | 512.0 | 256.0 | 96.0 | 12.185571 | 16.879060 |
| 2 | 83.877708 | 73.667464 | 85.971731 | 1.684378e+07 | 54.544020 | 45.268959 | 512.0 | 256.0 | 128.0 | 15.372071 | 20.704700 |
| 3 | 22.158231 | 19.175062 | 21.592166 | 4.204548e+06 | 49.470312 | 44.051874 | 512.0 | 512.0 | 64.0 | 12.806895 | 12.086386 |
| 4 | 74.314599 | 62.740502 | 73.697679 | 1.418549e+07 | 54.582365 | 42.422741 | 512.0 | 512.0 | 96.0 | 18.343714 | 18.276245 |
| 5 | 175.803029 | 147.083379 | 172.934481 | 3.362205e+07 | 73.606628 | 45.303635 | 512.0 | 512.0 | 128.0 | 20.484699 | 21.012191 |
| 6 | 48.476630 | 38.176309 | 44.166937 | 8.400906e+06 | 80.896379 | 63.477555 | 512.0 | 1024.0 | 64.0 | 24.250173 | 14.151128 |
| 7 | 162.680963 | 125.282475 | 145.128272 | 2.834328e+07 | 89.564398 | 51.254591 | 512.0 | 1024.0 | 96.0 | 27.234583 | 17.369565 |
| 8 | 384.764061 | 293.919305 | 344.319085 | 6.717847e+07 | 127.674076 | 53.889614 | 512.0 | 1024.0 | 128.0 | 30.057984 | 20.883720 |
| 9 | 10.619841 | 9.675814 | 12.003718 | 2.106394e+06 | 36.404214 | 37.327517 | 729.0 | 256.0 | 64.0 | 15.376221 | 20.442626 |
| 10 | 35.512586 | 31.470908 | 36.524022 | 7.106582e+06 | 38.626855 | 39.609083 | 729.0 | 256.0 | 96.0 | 12.594487 | 17.364630 |
| 11 | 83.967756 | 73.666845 | 85.826887 | 1.684380e+07 | 60.144997 | 47.124122 | 729.0 | 256.0 | 128.0 | 15.207501 | 20.652246 |
| 12 | 22.178372 | 19.174402 | 22.966625 | 4.204598e+06 | 48.673313 | 39.509351 | 729.0 | 512.0 | 64.0 | 16.780932 | 17.162932 |
| 13 | 74.390083 | 62.739855 | 74.222449 | 1.418554e+07 | 53.314672 | 41.362377 | 729.0 | 512.0 | 96.0 | 18.602162 | 18.647579 |
| 14 | 175.986288 | 147.082760 | 172.148075 | 3.362210e+07 | 79.305981 | 48.371853 | 729.0 | 512.0 | 128.0 | 20.222788 | 20.873158 |
| 15 | 48.520073 | 38.175649 | 44.713030 | 8.401006e+06 | 79.894371 | 59.372170 | 729.0 | 1024.0 | 64.0 | 25.170952 | 16.156161 |
| 16 | 162.835093 | 125.281828 | 148.186731 | 2.834338e+07 | 83.965075 | 52.108529 | 729.0 | 1024.0 | 96.0 | 28.213289 | 18.685817 |
| 17 | 385.133740 | 293.918686 | 347.009533 | 6.717857e+07 | 118.948031 | 53.259494 | 729.0 | 1024.0 | 128.0 | 30.140738 | 21.168359 |
| 18 | 10.625269 | 9.675391 | 11.676583 | 2.106414e+06 | 37.717062 | 37.350154 | 1000.0 | 256.0 | 64.0 | 13.037556 | 18.212172 |
| 19 | 35.535707 | 31.470494 | 38.129689 | 7.106602e+06 | 34.052828 | 34.529437 | 1000.0 | 256.0 | 96.0 | 15.273942 | 20.061783 |
| 20 | 84.025333 | 73.666448 | 87.698720 | 1.684382e+07 | 51.917553 | 43.952556 | 1000.0 | 256.0 | 128.0 | 16.429116 | 21.834959 |
| 21 | 22.191250 | 19.173979 | 23.075291 | 4.204639e+06 | 47.847240 | 39.671418 | 1000.0 | 512.0 | 64.0 | 17.187382 | 18.132954 |
| 22 | 74.438348 | 62.739441 | 77.022960 | 1.418558e+07 | 49.269650 | 41.011409 | 1000.0 | 512.0 | 96.0 | 20.790522 | 20.926576 |
| 23 | 176.103465 | 147.082363 | 174.806887 | 3.362214e+07 | 73.577840 | 45.496515 | 1000.0 | 512.0 | 128.0 | 21.001375 | 21.694538 |
| 24 | 48.547850 | 38.175226 | 46.963656 | 8.401087e+06 | 77.625400 | 60.831823 | 1000.0 | 1024.0 | 64.0 | 27.506611 | 19.248749 |
| 25 | 162.933646 | 125.281414 | 150.549970 | 2.834346e+07 | 80.981623 | 49.609760 | 1000.0 | 1024.0 | 96.0 | 28.812038 | 19.511240 |
| 26 | 385.370116 | 293.918289 | 351.664731 | 6.717865e+07 | 117.023694 | 52.677614 | 1000.0 | 1024.0 | 128.0 | 30.867999 | 22.073089 |
dict_functionName_model_call
{'.TAU_application': 0.9999999999999989,
'MPI_Allreduce()': 69114.41388888886,
'MPI_Barrier()': 0.6301048971915498*process + 32.380652583169415,
'MPI_Comm_rank()': 7.478305319873806*iteration + 24.533347800925743,
'MPI_Comm_size()': 0.9889531893055545,
'MPI_Finalize()': 32774.5344861112,
'MPI_Init()': 30426.886305555618,
'MPI_Irecv()': -0.003829264711374236*iteration*size**2 + 26.240016017329342*iteration - 38.59922858812197,
'MPI_Isend()': 25.586286063268066*iteration - 108.84110916015148*iteration/process - 61.42217708333335,
'MPI_Reduce()': 0.016384459516614158*iteration*process - 0.35540347438174624*process + 34.33414884767836,
'MPI_Wait()': 5079.973744444446,
'MPI_Waitall()': 0.9376670852678016*size**3 + 9342.44998311334,
'Real_t_CalcElemVolume(const': 0.9478893919798221*iteration*size**3 - 2.421500062860172*size**3 - 29758.051380170076,
'StrToInt': 0.0036904761904761624*size + 1.8253968253968273,
'int_main(int_char_**)': 0.9999999999999989,
'void_CalcKinematicsForElems(Domain': 1526.1962444444437,
'void_CommMonoQ(Domain': 0.00851523867407278*iteration*process + 89.41085477712845,
'void_CommRecv(Domain': 3.432252907519414*iteration - 4.979994212962981,
'void_CommSBN(Domain': 366.1933833333328,
'void_CommSend(Domain': 81149.40562222223,
'void_CommSyncPosVel(Domain': 6030.22978611111,
'void_Domain::BuildMesh(Int_t_Int_t_Int_t)': 43.86055833333329,
'void_Domain::CreateRegionIndexSets(Int_t_Int_t)': 7.608888888888915,
'void_Domain::Domain(Int_t_Index_t_Index_t_Index_t_Index_t_Int_t_Int_t_Int_t_Int_t)': 293.55321944444415,
'void_Domain::SetupBoundaryConditions(Int_t)': 5.056377777777794,
'void_Domain::SetupCommBuffers(Int_t)': 19.522633333333292,
'void_Domain::SetupElementConnectivities(Int_t)': 1.1540446825396833*size - 16.749323809523876,
'void_Domain::SetupSymmetryPlanes(Int_t)': 1.0111111111111102,
'void_Domain::~Domain()': 1.8583767361111097,
'void_InitMeshDecomp(Int_t_Int_t_Int_t': 0.9607767489722213,
'void_ParseCommandLineOptions(int_char_**_Int_t_cmdLineOpts': 0.9786008222222212,
'void_VerifyAndWriteFinalOutput(Real_t_Domain': 0.10938257227777808}
_list_series: list[pd.Series] = []
for elem_process in train_lulesh_processes:
for elem_iteration in train_lulesh_iterations:
for elem_size in train_lulesh_sizes:
for functionName in functionNames_lulesh:
target_env_oneCase = [
(dict_symbols_lulesh["size"], elem_size),
(dict_symbols_lulesh["iteration"], elem_iteration),
(dict_symbols_lulesh["process"], elem_process),
]
# コール回数
_predicted_call: float = (
dict_models_lulesh_call[functionName]
.subs(target_env_oneCase)
.evalf()
)
target_lulesh_DF: pd.DataFrame = trainDF_lulesh[
(trainDF_lulesh["Name"] == functionName)
& (trainDF_lulesh["process"] == elem_process)
& (trainDF_lulesh["iteration"] == elem_iteration)
& (trainDF_lulesh["size"] == elem_size)
]
_real_call: float = target_lulesh_DF.reset_index().loc[0]["#Call"]
_tmp_series: pd.Series = pd.Series(
{
"Name": functionName,
"process": elem_process,
"iteration": elem_iteration,
"size": elem_size,
"_predicted_call": _predicted_call,
"_real_call": _real_call,
}
)
_list_series.append(_tmp_series)
resultDF_call_fitness: pd.DataFrame = pd.DataFrame(data=_list_series)
resultDF_call_fitness = add_relativeErrorRateCol(
inputDF=resultDF_call_fitness,
real_colName="_real_call",
predicted_colName="_predicted_call",
targetColName="call relative error rate",
)
resultDF_call_fitness
| Name | process | iteration | size | _predicted_call | _real_call | call relative error rate | |
|---|---|---|---|---|---|---|---|
| 0 | .TAU_application | 8 | 8 | 16 | 0.999999999999999 | 1.000000 | 1.11022302462516e-13 |
| 1 | MPI_Allreduce() | 8 | 8 | 16 | 6.99999999999999 | 7.000000 | 7.61295788314393e-14 |
| 2 | MPI_Barrier() | 8 | 8 | 16 | 0.999999999999999 | 1.000000 | 1.11022302462516e-13 |
| 3 | MPI_Comm_rank() | 8 | 8 | 16 | 77.0000000000001 | 77.000000 | 1.29189588320018e-13 |
| 4 | MPI_Comm_size() | 8 | 8 | 16 | 0.999999999999999 | 1.000000 | 1.11022302462516e-13 |
| ... | ... | ... | ... | ... | ... | ... | ... |
| 3835 | void_Domain::SetupSymmetryPlanes(Int_t) | 343 | 128 | 48 | 0.999999999999999 | 1.000000 | 1.11022302462516e-13 |
| 3836 | void_Domain::~Domain() | 343 | 128 | 48 | 0.999999999999999 | 1.000000 | 1.11022302462516e-13 |
| 3837 | void_InitMeshDecomp(Int_t_Int_t_Int_t | 343 | 128 | 48 | 0.999999999999999 | 1.000000 | 1.11022302462516e-13 |
| 3838 | void_ParseCommandLineOptions(int_char_**_Int_t... | 343 | 128 | 48 | 0.999999999999999 | 1.000000 | 1.11022302462516e-13 |
| 3839 | void_VerifyAndWriteFinalOutput(Real_t_Domain | 343 | 128 | 48 | 0.00291544582073221 | 0.002915 | 0.000143348978445186 |
3840 rows × 7 columns
_list_series: list[pd.Series] = []
for functionName in functionNames_lulesh:
resultDF_call_fitness_perFunc: pd.DataFrame = resultDF_call_fitness[
resultDF_call_fitness["Name"] == functionName
]
resultDF_call_fitness_perFunc = resultDF_call_fitness_perFunc.astype(
{
"process": float,
"iteration": float,
"size": float,
"_predicted_call": float,
"_real_call": float,
"call relative error rate": float,
}
)
_tmp_series: pd.Series = resultDF_call_fitness_perFunc.mean(numeric_only=True)
_tmp_series["Name"] = functionName
_list_series.append(_tmp_series)
pd.options.display.float_format = "{:.4g}".format
_tmp_DF: pd.DataFrame = (
pd.DataFrame(data=_list_series)
.drop(columns=["process", "iteration", "size"])
.rename(
columns={
"_predicted_call": "予測値",
"_real_call": "実測値",
"call relative error rate": "MAPE",
"Name": "関数名",
}
)
)
_tmp_DF
| 予測値 | 実測値 | MAPE | 関数名 | |
|---|---|---|---|---|
| 0 | 1 | 1 | 1.11e-13 | .TAU_application |
| 1 | 48.6 | 48.6 | 4.056e-14 | MPI_Allreduce() |
| 2 | 1 | 1 | 1.11e-13 | MPI_Barrier() |
| 3 | 451.4 | 451.4 | 6.455e-14 | MPI_Comm_rank() |
| 4 | 1 | 1 | 1.11e-13 | MPI_Comm_size() |
| 5 | 1 | 1 | 1.11e-13 | MPI_Finalize() |
| 6 | 1 | 1 | 1.11e-13 | MPI_Init() |
| 7 | 1310 | 1310 | 28.14 | MPI_Irecv() |
| 8 | 1310 | 1310 | 28.14 | MPI_Isend() |
| 9 | 1 | 1 | 1.11e-13 | MPI_Reduce() |
| 10 | 1310 | 1310 | 28.14 | MPI_Wait() |
| 11 | 149.8 | 149.8 | 3.22e-14 | MPI_Waitall() |
| 12 | 2.04e+06 | 2.04e+06 | 0.0004923 | Real_t_CalcElemVolume(const |
| 13 | 2 | 2 | 1.11e-13 | StrToInt |
| 14 | 1 | 1 | 1.11e-13 | int_main(int_char_**) |
| 15 | 49.6 | 49.6 | 0 | void_CalcKinematicsForElems(Domain |
| 16 | 49.6 | 49.6 | 0 | void_CommMonoQ(Domain |
| 17 | 149.8 | 149.8 | 3.22e-14 | void_CommRecv(Domain |
| 18 | 50.6 | 50.6 | 1.703e-14 | void_CommSBN(Domain |
| 19 | 149.8 | 149.8 | 3.22e-14 | void_CommSend(Domain |
| 20 | 49.6 | 49.6 | 0 | void_CommSyncPosVel(Domain |
| 21 | 1 | 1 | 1.11e-13 | void_Domain::BuildMesh(Int_t_Int_t_Int_t) |
| 22 | 1 | 1 | 1.11e-13 | void_Domain::CreateRegionIndexSets(Int_t_Int_t) |
| 23 | 1 | 1 | 1.11e-13 | void_Domain::Domain(Int_t_Index_t_Index_t_Inde... |
| 24 | 1 | 1 | 1.11e-13 | void_Domain::SetupBoundaryConditions(Int_t) |
| 25 | 1 | 1 | 1.11e-13 | void_Domain::SetupCommBuffers(Int_t) |
| 26 | 1 | 1 | 1.11e-13 | void_Domain::SetupElementConnectivities(Int_t) |
| 27 | 1 | 1 | 1.11e-13 | void_Domain::SetupSymmetryPlanes(Int_t) |
| 28 | 1 | 1 | 1.11e-13 | void_Domain::~Domain() |
| 29 | 1 | 1 | 1.11e-13 | void_InitMeshDecomp(Int_t_Int_t_Int_t |
| 30 | 1 | 1 | 1.11e-13 | void_ParseCommandLineOptions(int_char_**_Int_t... |
| 31 | 0.0322 | 0.0322 | 8.135e-05 | void_VerifyAndWriteFinalOutput(Real_t_Domain |
print(_tmp_DF.to_csv())
,予測値,実測値,MAPE,関数名 0,0.9999999999999987,1.0,1.1102230246251565e-13,.TAU_application 1,48.599999999999994,48.6,4.0563281135330706e-14,MPI_Allreduce() 2,0.9999999999999987,1.0,1.1102230246251565e-13,MPI_Barrier() 3,451.40000000000015,451.4,6.454586758761107e-14,MPI_Comm_rank() 4,0.9999999999999987,1.0,1.1102230246251565e-13,MPI_Comm_size() 5,0.9999999999999987,1.0,1.1102230246251565e-13,MPI_Finalize() 6,0.9999999999999987,1.0,1.1102230246251565e-13,MPI_Init() 7,1310.1943333333334,1310.1943333333334,28.141797322952478,MPI_Irecv() 8,1310.1943333333334,1310.1943333333334,28.141797322952478,MPI_Isend() 9,0.9999999999999987,1.0,1.1102230246251565e-13,MPI_Reduce() 10,1310.1943333333334,1310.1943333333334,28.141797322952478,MPI_Wait() 11,149.79999999999993,149.8,3.219714529811956e-14,MPI_Waitall() 12,2040193.4999999986,2040193.5,0.0004922552347244996,Real_t_CalcElemVolume(const 13,1.9999999999999973,2.0,1.1102230246251565e-13,StrToInt 14,0.9999999999999987,1.0,1.1102230246251565e-13,int_main(int_char_**) 15,49.6,49.6,0.0,void_CalcKinematicsForElems(Domain 16,49.6,49.6,0.0,void_CommMonoQ(Domain 17,149.79999999999993,149.8,3.219714529811956e-14,void_CommRecv(Domain 18,50.599999999999994,50.6,1.703281651373677e-14,void_CommSBN(Domain 19,149.79999999999993,149.8,3.219714529811956e-14,void_CommSend(Domain 20,49.6,49.6,0.0,void_CommSyncPosVel(Domain 21,0.9999999999999987,1.0,1.1102230246251565e-13,void_Domain::BuildMesh(Int_t_Int_t_Int_t) 22,0.9999999999999987,1.0,1.1102230246251565e-13,void_Domain::CreateRegionIndexSets(Int_t_Int_t) 23,0.9999999999999987,1.0,1.1102230246251565e-13,void_Domain::Domain(Int_t_Index_t_Index_t_Index_t_Index_t_Int_t_Int_t_Int_t_Int_t) 24,0.9999999999999987,1.0,1.1102230246251565e-13,void_Domain::SetupBoundaryConditions(Int_t) 25,0.9999999999999987,1.0,1.1102230246251565e-13,void_Domain::SetupCommBuffers(Int_t) 26,0.9999999999999987,1.0,1.1102230246251565e-13,void_Domain::SetupElementConnectivities(Int_t) 27,0.9999999999999987,1.0,1.1102230246251565e-13,void_Domain::SetupSymmetryPlanes(Int_t) 28,0.9999999999999987,1.0,1.1102230246251565e-13,void_Domain::~Domain() 29,0.9999999999999987,1.0,1.1102230246251565e-13,void_InitMeshDecomp(Int_t_Int_t_Int_t 30,0.9999999999999987,1.0,1.1102230246251565e-13,void_ParseCommandLineOptions(int_char_**_Int_t_cmdLineOpts 31,0.03220117999999999,0.03220118000000001,8.134579861569993e-05,void_VerifyAndWriteFinalOutput(Real_t_Domain
_tmp_DF.mean(numeric_only=True)
予測値 6.392e+04 実測値 6.392e+04 MAPE 2.638 dtype: float64
_list_series_whole: list[pd.Series] = []
for elem_process in test_lulesh_processes:
for elem_iteration in test_lulesh_iterations:
for elem_size in test_lulesh_sizes:
_list_series: list[pd.Series] = []
for functionName in functionNames_lulesh:
target_env_oneCase = [
(dict_symbols_lulesh["size"], elem_size),
(dict_symbols_lulesh["iteration"], elem_iteration),
(dict_symbols_lulesh["process"], elem_process),
]
# コール回数
_predicted_call: float = (
dict_models_lulesh_call[functionName]
.subs(target_env_oneCase)
.evalf()
)
target_lulesh_DF: pd.DataFrame = testDF_lulesh[
(testDF_lulesh["Name"] == functionName)
& (testDF_lulesh["process"] == elem_process)
& (testDF_lulesh["iteration"] == elem_iteration)
& (testDF_lulesh["size"] == elem_size)
]
_real_call: float = target_lulesh_DF.reset_index().loc[0]["#Call"]
_tmp_series: pd.Series = pd.Series(
{
"Name": functionName,
"process": elem_process,
"iteration": elem_iteration,
"size": elem_size,
"_predicted_call": _predicted_call,
"_real_call": _real_call,
}
)
_list_series.append(_tmp_series)
_tmp_DF: pd.DataFrame = pd.DataFrame(data=_list_series)
_tmp_DF = _tmp_DF.astype(
{
"process": float,
"iteration": float,
"size": float,
"_predicted_call": float,
"_real_call": float,
}
)
_tmp_DF = add_relativeErrorRateCol(
inputDF=_tmp_DF,
real_colName="_real_call",
predicted_colName="_predicted_call",
targetColName="call relative error rate",
)
_tmp_DF["weighted MAPE"] = calcWeightedMAPEscore(
inputDF=_tmp_DF,
inputColumnDict={
"funcName": "Name",
"call": "_real_call",
"MAPE": "call relative error rate",
},
)
_list_series_whole.append(_tmp_DF.mean(numeric_only=True))
resultDF_call_prediction_accuracy: pd.DataFrame = pd.DataFrame(data=_list_series_whole)
resultDF_call_prediction_accuracy = resultDF_call_prediction_accuracy.drop(
columns=["_predicted_call", "_real_call"]
)
print(resultDF_call_prediction_accuracy.to_csv())
,process,iteration,size,call relative error rate,weighted MAPE 0,512.0,256.0,64.0,2.3670808340001734,0.010288561799213546 1,512.0,256.0,96.0,2.3670825851693684,0.0032555301172473203 2,512.0,256.0,128.0,2.367080875286372,0.0014744577828284854 3,512.0,512.0,64.0,2.3669089763021747,0.01019978358968124 4,512.0,512.0,96.0,2.366908992936377,0.0031057606684838095 5,512.0,512.0,128.0,2.3669089969854924,0.0013781898150524797 6,512.0,1024.0,64.0,2.366822902982782,0.01015526465762515 7,512.0,1024.0,96.0,2.366828941775678,0.0032511744607927875 8,512.0,1024.0,128.0,2.3668287284279663,0.0015159890300888623 9,729.0,256.0,64.0,2.5693203049921034,0.011474204365806144 10,729.0,256.0,96.0,2.5693220561612984,0.0036069798468940178 11,729.0,256.0,128.0,2.5693203462783014,0.0016227408673255138 12,729.0,512.0,64.0,2.5691342642882082,0.01138630989535183 13,729.0,512.0,96.0,2.5691342809224107,0.003457472456381772 14,729.0,512.0,128.0,2.569134284971526,0.0015265834769116217 15,729.0,1024.0,64.0,2.5690484715445887,0.011342278758229879 16,729.0,1024.0,96.0,2.5690545103374847,0.00360303089134757 17,729.0,1024.0,128.0,2.569054296989773,0.001664443724473562 18,1000.0,256.0,64.0,2.7254109459355034,0.0124385584670438 19,1000.0,256.0,96.0,2.7254126971046984,0.0038928392832321967 20,1000.0,256.0,128.0,2.725410987221702,0.0017433506488959707 21,1000.0,512.0,64.0,2.7252219764076546,0.0123514286190105 22,1000.0,512.0,96.0,2.7252219930418575,0.0037435586304984067 23,1000.0,512.0,128.0,2.725221997090973,0.0016472889322820992 24,1000.0,1024.0,64.0,2.725116758252199,0.012307669331929958 25,1000.0,1024.0,96.0,2.725122797045095,0.0038891976908803252 26,1000.0,1024.0,128.0,2.7251225836973836,0.0017851832016452954
%reset -f
jupyter_pwd = %pwd
if jupyter_pwd == "/":
%cd /workspace
# %pdb on
# ipynb形式のライブラリのインポート
%run ./lib/lib.ipynb
# ipynb形式のライブラリノートを.py形式に変更したものをインポート
import lib
import lib.lab_lib
from lib.lab_lib import *
# 生データの入ったCSVファイルの保持されたディレクトリ名を格納している変数
csvDirPath = "./csv_files/"
# NPBのベンチマーク名のリスト
benchmarkNames = ["cg", "ep", "ft", "is", "lu", "mg"]
# NPBのプロセス数
npb_process :list[int] = [2, 4, 8, 16, 32, 64, 128, 256]
train_npb_process :list[int] = npb_process[:-1]
test_npb_process :list[int] = npb_process[-1:]
# NPBのCGの初期変数
cg_na: list[int] = [14000, 30000, 75000, 100000, 1500000]
cg_nonzer: list[int] = [11, 12, 13, 14, 15, 18, 21]
cg_niter: list[int] = [15, 30, 75, 90, 100]
cg_shift: list[int] = [20, 40, 60, 80, 110, 200]
train_cg_na: list[int] = cg_na[:-1]
train_cg_nonzer: list[int] = cg_nonzer[:-1]
train_cg_niter: list[int] = cg_niter[:-1]
train_cg_shift: list[int] = cg_shift[:-1]
test_cg_na: list[int] = cg_na[-1:]
test_cg_nonzer: list[int] = cg_nonzer[-1:]
test_cg_niter: list[int] = cg_niter[-1:]
test_cg_shift: list[int] = cg_shift[-1:]
# NPBのMGの初期変数
mg_size :list[int] = [32, 64, 128, 256, 512]
mg_nit: list[int] = [4, 10, 20, 35, 50]
train_mg_process :list[int] = [4, 8, 16, 32, 64]
train_mg_size :list[int] = [4, 8, 16, 32, 64]
train_mg_nit :list[int] = [5, 10, 15, 20, 25]
test_mg_process :list[int] = [128, 256, 512]
test_mg_size :list[int] = [128, 256, 512]
test_mg_nit :list[int] = [30, 40, 50]
# NPBのEPの初期変数
train_ep_process :list[int] = [4, 8, 16, 32, 64]
train_ep_size :list[str] = ["S", "W", "A", "B", "C"]
test_ep_process :list[int] = [128, 256, 512]
test_ep_size :list[str] = ["D", "E", "F"]
# NPBのFTの初期変数
train_ft_process :list[int] = [2, 4, 8, 16, 32, 64]
# NPBのISの初期変数
train_is_process :list[int] = [2, 4, 8, 16, 32, 64]
# LULESH ベンチマークプログラムのプロセス数・問題サイズ・イテレーション数
lulesh_processes: list[int] = [8, 27, 64, 125, 216, 343, 512]
lulesh_iterations: list[int] = [8, 16, 32, 64, 128, 256]
lulesh_sizes: list[int] = [16, 24, 32, 48, 64, 128]
train_lulesh_processes: list[int] = [8, 27, 64, 125, 216, 343]
train_lulesh_iterations: list[int] = [8, 16, 32, 64, 128]
train_lulesh_sizes: list[int] = [16, 24, 32, 48]
test_lulesh_processes: list[int] = [512, 729, 1000]
test_lulesh_iterations: list[int] = [256, 512, 1024]
test_lulesh_sizes: list[int] = [64, 96, 128]
# Extra-Pのオプション
modelerNames: list[str] = [
# "refining",
"multi-parameter",
"default",
# "basic --options poly_exponents=-1,0,1,2,3 log_exponents=0,1 force_combination_exponents=1 allow_negative_exponents=1"
]
modelerOption: str = """ --options \#spm=Basic \#spo=poly_exponents=-1,0,1,2,3,log_exponents=0,1,force_combination_exponents=1,allow_negative_exponents=True"""
list_modelName: list[str] = [
"modelIp",
"modelLog",
"modelLinAndIp",
"modelLinAndLog",
"modelIpAndLin",
"modelIpAndLog",
"modelLogAndLin",
"modelLogAndIp",
"modelProcessDividedByProblemSize",
"modelProblemSizeDividedByProcess",
"modelInfiniteProductOfProblemSizeMultipliedByProcesses",
"modelInfiniteProductOfProblemSizeDividedByProcesses",
"modelLinearSumOf2elementCombination",
"modelLinearSumOfElementCombinations",
"modelLinearSumOf2elementCombinationWithSquared",
"modelLinearSumOf2elementCombinationWithCubed",
"modelSquareRootOfProcess",
"modelSquareRootTimesOtherElems",
"modelObeyOneParameter",
"modelLin"
# "modelBasicTree",
]
list_csvDir = [
"./csv_files/lulesh_1st/",
"./csv_files/lulesh_2nd/",
"./csv_files/lulesh_3rd/",
]
list_csvDir_mg = [
"./csv_files/mg_1st/",
"./csv_files/mg_2nd/",
"./csv_files/mg_3rd/",
]
DEBUG:__main__:hello
_tmp_DF: pd.DataFrame = return_rawDF_mg(
list_process=[test_mg_process[0]],
list_problem_size=[test_mg_size[0]],
list_nit=[test_mg_nit[0]],
csvDir=list_csvDir_mg[0],
)
trainDF_mg: pd.DataFrame = ret_averaged_rawDF_mg(
list_process=train_mg_process,
list_nit=train_mg_nit,
list_size=train_mg_size,
list_csvDir=list_csvDir_mg,
resVar="Exclusive",
)
testDF_mg: pd.DataFrame = ret_averaged_rawDF_mg(
list_process=test_mg_process,
list_nit=test_mg_nit,
list_size=test_mg_size,
list_csvDir=list_csvDir_mg,
resVar="Exclusive",
)
trainDF_mg = returnConvertedTargetPprofTimeDF(
inputDF=trainDF_mg, resVars=["Exclusive", "Inclusive"]
)
testDF_mg = returnConvertedTargetPprofTimeDF(
inputDF=testDF_mg, resVars=["Exclusive", "Inclusive"]
)
trainDF_mg: pd.DataFrame = return_rawDF_mg(
list_process=train_npb_process,
list_problem_size=train_mg_size,
list_nit=train_mg_nit,
csvDir=csvDirPath,
)
testDF_mg: pd.DataFrame = return_rawDF_mg(
list_process=test_npb_process,
list_nit=test_mg_nit,
list_problem_size=test_mg_size,
csvDir=csvDirPath,
)
trainDF_mg = returnConvertedTargetPprofTimeDF(
inputDF=trainDF_mg, resVars=["Exclusive", "Inclusive"]
)
testDF_mg = returnConvertedTargetPprofTimeDF(
inputDF=testDF_mg, resVars=["Exclusive", "Inclusive"]
)
trainDF_mg = addPerCallCol(
inputDF=trainDF_mg, targetColNames=["Exclusive", "Inclusive"], CallColName="#Call"
)
testDF_mg = addPerCallCol(
inputDF=testDF_mg, targetColNames=["Exclusive", "Inclusive"], CallColName="#Call"
)
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size4_nit5_process2.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size4_nit10_process2.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size4_nit15_process2.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size4_nit20_process2.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size4_nit25_process2.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size8_nit5_process2.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size8_nit10_process2.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size8_nit15_process2.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size8_nit20_process2.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size8_nit25_process2.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size16_nit5_process2.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size16_nit10_process2.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size16_nit15_process2.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size16_nit20_process2.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size16_nit25_process2.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size32_nit5_process2.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size32_nit15_process2.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size32_nit25_process2.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size64_nit5_process2.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size64_nit15_process2.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size64_nit25_process2.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size4_nit5_process4.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size4_nit10_process4.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size4_nit15_process4.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size4_nit20_process4.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size4_nit25_process4.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size8_nit5_process4.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size8_nit10_process4.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size8_nit15_process4.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size8_nit20_process4.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size8_nit25_process4.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size16_nit5_process4.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size16_nit10_process4.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size16_nit15_process4.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size16_nit20_process4.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size16_nit25_process4.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size32_nit5_process4.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size32_nit15_process4.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size32_nit25_process4.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size64_nit5_process4.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size64_nit15_process4.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size64_nit25_process4.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size4_nit5_process8.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size4_nit10_process8.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size4_nit15_process8.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size4_nit20_process8.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size4_nit25_process8.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size8_nit5_process8.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size8_nit10_process8.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size8_nit15_process8.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size8_nit20_process8.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size8_nit25_process8.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size16_nit5_process8.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size16_nit10_process8.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size16_nit15_process8.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size16_nit20_process8.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size16_nit25_process8.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size32_nit5_process8.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size32_nit15_process8.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size32_nit25_process8.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size64_nit5_process8.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size64_nit15_process8.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size64_nit25_process8.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size4_nit5_process16.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size4_nit10_process16.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size4_nit15_process16.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size4_nit20_process16.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size4_nit25_process16.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size8_nit5_process16.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size8_nit10_process16.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size8_nit15_process16.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size8_nit20_process16.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size8_nit25_process16.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size16_nit5_process16.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size16_nit10_process16.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size16_nit15_process16.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size16_nit20_process16.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size16_nit25_process16.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size32_nit5_process16.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size32_nit15_process16.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size32_nit25_process16.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size64_nit5_process16.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size64_nit15_process16.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size64_nit25_process16.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size4_nit5_process32.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size4_nit10_process32.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size4_nit15_process32.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size4_nit20_process32.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size4_nit25_process32.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size8_nit5_process32.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size8_nit10_process32.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size8_nit15_process32.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size8_nit20_process32.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size8_nit25_process32.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size16_nit5_process32.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size16_nit10_process32.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size16_nit15_process32.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size16_nit20_process32.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size16_nit25_process32.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size32_nit5_process32.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size32_nit15_process32.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size32_nit25_process32.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size64_nit5_process32.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size64_nit15_process32.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size64_nit25_process32.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size4_nit5_process64.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size4_nit10_process64.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size4_nit15_process64.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size4_nit20_process64.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size4_nit25_process64.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size8_nit5_process64.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size8_nit10_process64.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size8_nit15_process64.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size8_nit20_process64.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size8_nit25_process64.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size16_nit5_process64.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size16_nit10_process64.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size16_nit15_process64.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size16_nit20_process64.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size16_nit25_process64.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size32_nit5_process64.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size32_nit15_process64.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size32_nit25_process64.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size64_nit5_process64.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size64_nit15_process64.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size64_nit25_process64.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size4_nit5_process128.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size4_nit10_process128.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size4_nit15_process128.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size4_nit20_process128.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size4_nit25_process128.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size8_nit5_process128.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size8_nit10_process128.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size8_nit15_process128.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size8_nit20_process128.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size8_nit25_process128.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size16_nit5_process128.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size16_nit10_process128.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size16_nit15_process128.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size16_nit20_process128.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size16_nit25_process128.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size32_nit5_process128.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size32_nit15_process128.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size32_nit25_process128.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size64_nit5_process128.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size64_nit15_process128.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size64_nit25_process128.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size128_nit30_process256.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size128_nit40_process256.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size256_nit30_process256.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size256_nit40_process256.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size512_nit30_process256.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
/workspace/lib/lab_lib.py:8830: UserWarning: ./csv_files/mg_problem_size512_nit40_process256.csv doesn't exist
warnings.warn(f"{filePath} doesn't exist")
# 学習用のデータ
trainDF_cg: pd.DataFrame = return_rawDF_cg(
list_process=train_npb_process,
list_na=train_cg_na,
list_nonzer=train_cg_nonzer,
list_niter=train_cg_niter,
list_shift=train_cg_shift,
csvDir=csvDirPath,
)
# 予測対象用のデータ
testDF_cg: pd.DataFrame = return_rawDF_cg(
list_process=test_npb_process,
list_na=test_cg_na,
list_nonzer=test_cg_nonzer,
list_niter=test_cg_niter,
list_shift=test_cg_shift,
csvDir=csvDirPath,
)
trainDF_cg = returnConvertedTargetPprofTimeDF(
inputDF=trainDF_cg, resVars=["Exclusive", "Inclusive"]
)
testDF_cg = returnConvertedTargetPprofTimeDF(
inputDF=testDF_cg, resVars=["Exclusive", "Inclusive"]
)
trainDF_cg = addPerCallCol(
inputDF=trainDF_cg, targetColNames=["Exclusive", "Inclusive"], CallColName="#Call"
)
testDF_cg = addPerCallCol(
inputDF=testDF_cg,
targetColNames=["Exclusive", "Inclusive"],
CallColName="#Call",
)
/workspace/lib/lab_lib.py:8785: UserWarning: ./csv_files/cg_na75000_nonzer18_niter30_shift60_process4.csv is empty.
warnings.warn(f"{filePath} is empty.")
/workspace/lib/lab_lib.py:8785: UserWarning: ./csv_files/cg_na75000_nonzer15_niter90_shift80_process8.csv is empty.
warnings.warn(f"{filePath} is empty.")
"""
functionNames_cg list[str]:
ベンチマークプログラムCGで実行された関数の関数名を保持した文字列のリスト
functionNames_mg list[str]:
ベンチマークプログラムMGで実行された関数の関数名を保持した文字列のリスト
expVar_cg list[str]:
ベンチマークプログラムCGの説明変数
expVar_mg list[str]:
ベンチマークプログラムMGの説明変数
resVar_call str:
関数コール回数の目的変数
resVar_excl str:
Exclusiveの目的変数(all)
resVar_excl_perCall str:
Exclusiveの目的変数(perCall)
dict_symbols_cg dict[str, any]:
ベンチマークプログラムCGのシンボルを保持した辞書
dict_symbols_mg dict[str, any]:
ベンチマークプログラムMGのシンボルを保持した辞書
benchmarkName_cg str:
ベンチマーク名CG
benchmarkName_mg str:
ベンチマーク名MG
modelerName str:
Extra-Pのモデル名を保持した文字列
modelerOption str:
Extra-Pのモデルオプションを保持した文字列
"""
functionNames_cg: list[str] = sorted(list(set(trainDF_cg["Name"].to_list())))
functionNames_mg: list[str] = sorted(list(set(trainDF_mg["Name"].to_list())))
expVar_cg: list[str] = ["process", "na", "nonzer", "niter", "shift"]
expVar_mg: list[str] = ["process", "problem_size", "nit"]
resVar_call: str = "#Call"
resVar_excl: str = "Exclusive"
resVar_excl_perCall: str = f"{resVar_excl}PerCall"
dict_symbols_cg: dict[str, any] = {}
dict_symbols_mg: dict[str, any] = {}
benchmarkName_cg: str = "cg"
benchmarkName_mg: str = "mg"
modelerName: str = "multi-parameter"
modelerOption: str = """ --options \#spm=Basic \#spo=poly_exponents=-1,0,1,2,3,log_exponents=0,1,force_combination_exponents=1,allow_negative_exponents=True"""
for elem in expVar_cg:
dict_symbols_cg[elem] = symbols(elem, real=True)
for elem in expVar_mg:
dict_symbols_mg[elem] = symbols(elem, real=True)
# MGにおけるモデル構築
"""
dict_mg_model_exclusive_all dict[str, any]:
Exclusive予測用のモデル@all to all
dict_mg_model_exclusive*_perCall dict[str, any]:
Exclusive予測用のモデル@perCall
dict_cg_model_call dict[str, any]:
関数コール回数用のモデル
"""
dict_mg_model_exclusive_all: dict[str, any] = {}
dict_mg_model_exclusive_perCall: dict[str, any] = {}
dict_mg_model_call: dict[str, any] = {}
for functionName in functionNames_mg:
trainDF_mg_perFunc: pd.DataFrame = trainDF_mg[trainDF_mg["Name"] == functionName]
mg_model_exclusive_all: str = get_ExtraP_model(
inputDF_perFunc=trainDF_mg_perFunc,
expVar=expVar_mg,
resVar=resVar_excl,
functionName=functionName,
dict_symbols=dict_symbols_mg,
benchmarkName=benchmarkName_mg,
modelerName=modelerName,
modelerOption=modelerOption,
)
mg_model_exclusive_perCall: str = get_ExtraP_model(
inputDF_perFunc=trainDF_mg_perFunc,
expVar=expVar_mg,
resVar=resVar_excl_perCall,
functionName=functionName,
dict_symbols=dict_symbols_mg,
benchmarkName=benchmarkName_mg,
modelerName=modelerName,
modelerOption=modelerOption,
)
mg_model_call: str = get_ExtraP_model(
inputDF_perFunc=trainDF_mg_perFunc,
expVar=expVar_mg,
resVar=resVar_call,
functionName=functionName,
dict_symbols=dict_symbols_mg,
benchmarkName=benchmarkName_mg,
modelerName=modelerName,
modelerOption=modelerOption,
)
dict_mg_model_exclusive_all[functionName] = mg_model_exclusive_all
dict_mg_model_exclusive_perCall[functionName] = mg_model_exclusive_perCall
dict_mg_model_call[functionName] = mg_model_call
# MGにおける予測
_tmp_list: list[pd.Series] = []
for i, sr in testDF_mg.iterrows():
functionName: str = sr["Name"]
target_env: list[set[any]] = []
for expVar in expVar_mg:
target_env.append((dict_symbols_mg[expVar], sr[expVar]))
"""
_predicted_call:
予測された関数コール回数
_predicted_excl_all:
all to all で予測されたExclusive
_predicted_excl_perCall:
関数コール回数を経由して予測されたExclusive
"""
_predicted_call: float
_predicted_excl_all: float
_predicted_excl_perCall: float
_predicted_call = dict_mg_model_call[functionName].subs(target_env).evalf()
_predicted_excl_all = (
dict_mg_model_exclusive_all[functionName].subs(target_env).evalf()
)
_predicted_excl_perCall = (
dict_mg_model_exclusive_perCall[functionName].subs(target_env).evalf()
* _predicted_call
)
_tmp_series: pd.Series = pd.Series(
{
"real_Exclusive": sr["Exclusive"],
"real_call": sr["#Call"],
"predicted_Exclusive_all": _predicted_excl_all,
"predicted_Exclusive_perCall": _predicted_excl_perCall,
"predicted_call": _predicted_call,
"process": sr["process"],
"problem_size": sr["problem_size"],
"functionName": functionName,
}
)
_tmp_list.append(_tmp_series)
print(sr)
DF_result_mg: pd.DataFrame = pd.DataFrame(data=_tmp_list)
DF_result_mg
%Time 0.0 Exclusive 0.0 Inclusive 0.0 #Call 1.00391 #Subrs 0.0 Name TIMER_READ process 256 problem_size 512 nit 50 ExclusivePerCall 0.0 InclusivePerCall 0.0 Name: 40, dtype: object
| real_Exclusive | real_call | predicted_Exclusive_all | predicted_Exclusive_perCall | predicted_call | process | problem_size | functionName | |
|---|---|---|---|---|---|---|---|---|
| 0 | 2.420000e-05 | 1.000000 | 8.11392857142857e-6 | 8.11392857142857e-6 | 1.00000000000000 | 256 | 128 | .TAU_application |
| 1 | 2.820000e-04 | 1.000000 | 0.000242821428571429 | 0.000242821428571428 | 1.00000000000000 | 256 | 128 | MG_MPI |
| 2 | 5.380000e-01 | 1.000000 | 0.365928571428571 | 0.365928571428571 | 1.00000000000000 | 256 | 128 | MPI_Init() |
| 3 | 5.220000e-01 | 1.000000 | 0.395925592813830 | 0.395925592813830 | 1.00000000000000 | 256 | 128 | MPI_Finalize() |
| 4 | 5.730000e-04 | 51.000000 | 0.000432857142857143 | 0.000445989795918367 | 51.0000000000000 | 256 | 128 | MG3P |
| ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 118 | 1.600000e-06 | 2.000000 | 9.70451658521133e-7 | 9.70451658521133e-7 | 2.00000000000000 | 256 | 512 | TIMER_STOP |
| 119 | 5.510000e-07 | 0.003906 | -1.16555286677527e-6 | 2.66765644798171e-7 | 0.00390624999999999 | 256 | 512 | PRINT_RESULTS |
| 120 | 4.530000e-07 | 1.000000 | 3.44357142857143e-7 | 3.44357142857143e-7 | 1.00000000000000 | 256 | 512 | MPI_Comm_size() |
| 121 | 2.540000e-07 | 1.000000 | 2.20428571428571e-7 | 2.20428571428571e-7 | 1.00000000000000 | 256 | 512 | MPI_Comm_rank() |
| 122 | 1.520000e-07 | 1.003910 | 2.27142857142857e-7 | 2.01702807319246e-7 | 1.00390448796271 | 256 | 512 | TIMER_READ |
123 rows × 8 columns
DF_result_mg = add_relativeErrorRateCol(
inputDF=DF_result_mg,
real_colName="real_Exclusive",
predicted_colName="predicted_Exclusive_all",
targetColName="vs all",
)
DF_result_mg = add_relativeErrorRateCol(
inputDF=DF_result_mg,
real_colName="real_Exclusive",
predicted_colName="predicted_Exclusive_perCall",
targetColName="vs perCall",
)
print(DF_result_mg.mean())
DF_result_mg
real_Exclusive 0.039021 real_call 1158.280603 predicted_Exclusive_all 0.032440 predicted_Exclusive_perCall 0.025953 predicted_call 1355.365947 process 256.000000 problem_size 298.666667 vs all 98.361106 vs perCall 88.672502 dtype: float64
/tmp/ipykernel_15984/2370717254.py:14: FutureWarning: The default value of numeric_only in DataFrame.mean is deprecated. In a future version, it will default to False. In addition, specifying 'numeric_only=None' is deprecated. Select only valid columns or specify the value of numeric_only to silence this warning. print(DF_result_mg.mean())
| real_Exclusive | real_call | predicted_Exclusive_all | predicted_Exclusive_perCall | predicted_call | process | problem_size | functionName | vs all | vs perCall | |
|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 2.420000e-05 | 1.000000 | 8.11392857142857e-6 | 8.11392857142857e-6 | 1.00000000000000 | 256 | 128 | .TAU_application | 66.4713695395514 | 66.4713695395514 |
| 1 | 2.820000e-04 | 1.000000 | 0.000242821428571429 | 0.000242821428571428 | 1.00000000000000 | 256 | 128 | MG_MPI | 13.8931104356636 | 13.8931104356637 |
| 2 | 5.380000e-01 | 1.000000 | 0.365928571428571 | 0.365928571428571 | 1.00000000000000 | 256 | 128 | MPI_Init() | 31.9835369091875 | 31.9835369091875 |
| 3 | 5.220000e-01 | 1.000000 | 0.395925592813830 | 0.395925592813830 | 1.00000000000000 | 256 | 128 | MPI_Finalize() | 24.1521852847068 | 24.1521852847069 |
| 4 | 5.730000e-04 | 51.000000 | 0.000432857142857143 | 0.000445989795918367 | 51.0000000000000 | 256 | 128 | MG3P | 24.4577412116679 | 22.1658296826584 |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 118 | 1.600000e-06 | 2.000000 | 9.70451658521133e-7 | 9.70451658521133e-7 | 2.00000000000000 | 256 | 512 | TIMER_STOP | 39.3467713424292 | 39.3467713424292 |
| 119 | 5.510000e-07 | 0.003906 | -1.16555286677527e-6 | 2.66765644798171e-7 | 0.00390624999999999 | 256 | 512 | PRINT_RESULTS | 311.534095603497 | 51.5851824322738 |
| 120 | 4.530000e-07 | 1.000000 | 3.44357142857143e-7 | 3.44357142857143e-7 | 1.00000000000000 | 256 | 512 | MPI_Comm_size() | 23.9829706717124 | 23.9829706717124 |
| 121 | 2.540000e-07 | 1.000000 | 2.20428571428571e-7 | 2.20428571428571e-7 | 1.00000000000000 | 256 | 512 | MPI_Comm_rank() | 13.2170978627671 | 13.2170978627672 |
| 122 | 1.520000e-07 | 1.003910 | 2.27142857142857e-7 | 2.01702807319246e-7 | 1.00390448796271 | 256 | 512 | TIMER_READ | 49.4360902255639 | 32.6992153416093 |
123 rows × 10 columns
DF_result_mg = DF_result_mg.astype(
{
"predicted_Exclusive_all": "float",
"predicted_Exclusive_perCall": "float",
"predicted_call": float,
"vs all": "float",
"vs perCall": "float",
}
)
print(DF_result_mg.dtypes)
print(DF_result_mg.to_csv(float_format="%.3f"))
real_Exclusive float64 real_call float64 predicted_Exclusive_all float64 predicted_Exclusive_perCall float64 predicted_call float64 process int64 problem_size int64 functionName object vs all float64 vs perCall float64 dtype: object ,real_Exclusive,real_call,predicted_Exclusive_all,predicted_Exclusive_perCall,predicted_call,process,problem_size,functionName,vs all,vs perCall 0,0.000,1.000,0.000,0.000,1.000,256,128,.TAU_application,66.471,66.471 1,0.000,1.000,0.000,0.000,1.000,256,128,MG_MPI,13.893,13.893 2,0.538,1.000,0.366,0.366,1.000,256,128,MPI_Init(),31.984,31.984 3,0.522,1.000,0.396,0.396,1.000,256,128,MPI_Finalize(),24.152,24.152 4,0.001,51.000,0.000,0.000,51.000,256,128,MG3P,24.458,22.166 5,0.002,1024.000,0.002,0.002,794.500,256,128,COMM3,4.168,3.832 6,0.026,5066.620,0.012,0.011,4053.939,256,128,MPI_Wait(),53.101,59.431 7,0.002,4862.620,0.002,0.002,3880.247,256,128,TAKE3,9.696,9.718 8,0.003,359.000,0.012,0.008,282.500,256,128,RESID,284.521,168.946 9,0.001,357.000,0.006,0.001,280.500,256,128,PSINV,530.279,24.667 10,0.001,306.000,0.001,0.002,229.500,256,128,RPRJ3,45.751,200.516 11,0.001,306.000,0.004,0.003,229.500,256,128,INTERP,323.878,223.939 12,0.000,306.000,0.000,0.000,229.500,256,128,COMM3_EX,11.064,74.606 13,0.000,204.000,0.000,0.000,121.125,256,128,TAKE3_EX,40.691,41.406 14,0.005,5066.620,0.003,0.002,4053.939,256,128,READY,35.877,57.713 15,0.002,4862.620,0.002,0.002,3880.247,256,128,GIVE3,9.335,9.974 16,0.005,5066.620,0.022,0.005,4053.939,256,128,MPI_Send(),347.634,5.208 17,0.000,2.000,0.001,0.001,2.000,256,128,ZRAN3,133.068,133.068 18,0.003,6.000,0.001,0.001,6.000,256,128,MPI_Barrier(),66.914,66.914 19,0.002,88.000,0.003,0.003,88.000,256,128,MPI_Allreduce(),71.378,71.378 20,0.001,5066.620,0.001,0.001,4053.939,256,128,MPI_Irecv(),18.996,39.543 21,0.001,7.000,0.001,0.001,7.000,256,128,MPI_Bcast(),7.318,7.318 22,0.000,4.000,0.000,0.000,4.000,256,128,NORM2U3,294.064,294.064 23,0.000,523.562,0.000,0.004,594.594,256,128,ZERO3,60.870,997.809 24,0.000,204.000,0.000,0.000,121.125,256,128,GIVE3_EX,42.185,43.590 25,0.000,512.000,0.001,0.000,1939.381,256,128,VRANLC,342.732,241.254 26,0.000,642.844,0.000,0.000,2164.941,256,128,RANDLC,281.879,209.720 27,0.000,310.266,0.000,0.000,250.859,256,128,BUBBLE,14.544,21.307 28,0.000,6.000,0.000,0.000,6.000,256,128,POWER,13.088,13.088 29,0.000,1.000,0.000,0.000,1.000,256,128,GET_ACTIVE_NPROCS,14.441,14.441 30,0.000,2.000,0.000,0.000,2.000,256,128,TIMER_START,6.925,6.925 31,0.000,1.000,0.000,0.000,1.000,256,128,ALLOC_SPACE,23.511,23.511 32,0.000,2.000,0.000,0.000,2.000,256,128,SETUP,437.813,437.813 33,0.000,1.000,0.000,0.000,1.000,256,128,MPI_Reduce(),2.937,2.937 34,0.000,17.000,0.000,0.000,17.000,256,128,TIMER_CLEAR,3.659,3.659 35,0.000,0.004,0.000,0.000,0.004,256,128,CHECK_TIMER_FLAG,131.259,7.027 36,0.000,2.000,0.000,0.000,2.000,256,128,TIMER_STOP,4.800,4.800 37,0.000,0.004,-0.000,0.000,0.004,256,128,PRINT_RESULTS,304.483,53.199 38,0.000,1.000,0.000,0.000,1.000,256,128,MPI_Comm_size(),4.987,4.987 39,0.000,1.000,0.000,0.000,1.000,256,128,MPI_Comm_rank(),19.798,19.798 40,0.000,1.004,0.000,0.000,1.004,256,128,TIMER_READ,26.190,12.057 41,0.000,1.000,0.000,0.000,1.000,256,256,.TAU_application,38.937,38.937 42,0.000,1.000,0.000,0.000,1.000,256,256,MG_MPI,39.597,39.597 43,0.539,1.000,0.366,0.366,1.000,256,256,MPI_Init(),32.110,32.110 44,0.519,1.000,0.396,0.396,1.000,256,256,MPI_Finalize(),23.714,23.714 45,0.001,51.000,0.000,0.000,51.000,256,256,MG3P,31.183,29.095 46,0.002,1177.000,0.002,0.002,794.500,256,256,COMM3,4.168,3.832 47,0.086,5984.620,0.012,0.011,4053.939,256,256,MPI_Wait(),85.821,87.735 48,0.022,410.000,0.092,0.062,282.500,256,256,RESID,319.015,181.308 49,0.004,5780.620,0.002,0.002,3880.247,256,256,TAKE3,45.152,54.859 50,0.011,408.000,0.050,0.002,280.500,256,256,PSINV,354.942,79.161 51,0.004,357.000,0.004,0.008,229.500,256,256,RPRJ3,2.030,109.767 52,0.004,5780.620,0.002,0.002,3880.247,256,256,GIVE3,45.333,54.987 53,0.024,5984.620,0.047,0.005,4053.939,256,256,MPI_Send(),94.848,78.082 54,0.020,5984.620,0.003,0.002,4053.939,256,256,READY,83.969,88.640 55,0.004,357.000,0.015,0.011,229.500,256,256,INTERP,273.133,175.627 56,0.000,357.000,0.000,0.000,229.500,256,256,COMM3_EX,13.695,69.440 57,0.000,204.000,0.000,0.000,121.125,256,256,TAKE3_EX,37.360,38.115 58,0.001,2.000,0.004,0.004,2.000,256,256,ZRAN3,268.028,268.028 59,0.002,5984.620,0.001,0.001,4053.939,256,256,MPI_Irecv(),59.498,30.228 60,0.002,88.000,0.003,0.003,88.000,256,256,MPI_Allreduce(),71.378,71.378 61,0.002,6.000,0.001,0.001,6.000,256,256,MPI_Barrier(),50.371,50.371 62,0.002,574.562,0.000,0.016,594.594,256,256,ZERO3,84.390,711.424 63,0.001,7.000,0.001,0.001,7.000,256,256,MPI_Bcast(),7.318,7.318 64,0.000,4.000,0.002,0.002,4.000,256,256,NORM2U3,386.444,386.444 65,0.001,2048.000,0.002,0.002,7757.525,256,256,VRANLC,259.799,169.691 66,0.000,2.000,0.000,0.000,2.000,256,256,TIMER_START,92.084,92.084 67,0.000,2222.550,0.002,0.001,8426.156,256,256,RANDLC,321.849,241.706 68,0.000,204.000,0.000,0.000,121.125,256,256,GIVE3_EX,39.494,40.965 69,0.000,390.875,0.000,0.000,250.859,256,256,BUBBLE,31.956,37.341 70,0.000,6.000,0.000,0.000,6.000,256,256,POWER,21.872,21.872 71,0.000,1.000,0.000,0.000,1.000,256,256,GET_ACTIVE_NPROCS,15.228,15.228 72,0.000,1.000,0.000,0.000,1.000,256,256,ALLOC_SPACE,28.536,28.536 73,0.000,2.000,0.000,0.000,2.000,256,256,SETUP,342.504,342.504 74,0.000,1.000,0.000,0.000,1.000,256,256,MPI_Reduce(),16.325,16.325 75,0.000,17.000,0.000,0.000,17.000,256,256,TIMER_CLEAR,7.252,7.252 76,0.000,0.004,0.000,0.000,0.004,256,256,CHECK_TIMER_FLAG,142.389,2.553 77,0.000,2.000,0.000,0.000,2.000,256,256,TIMER_STOP,24.183,24.183 78,0.000,0.004,-0.000,0.000,0.004,256,256,PRINT_RESULTS,303.058,53.525 79,0.000,1.000,0.000,0.000,1.000,256,256,MPI_Comm_size(),15.183,15.183 80,0.000,1.000,0.000,0.000,1.000,256,256,MPI_Comm_rank(),10.395,10.395 81,0.000,1.004,0.000,0.000,1.004,256,256,TIMER_READ,29.058,14.604 82,0.000,1.000,0.000,0.000,1.000,256,512,.TAU_application,42.851,42.851 83,0.000,1.000,0.000,0.000,1.000,256,512,MG_MPI,49.934,49.934 84,0.001,51.000,0.000,0.000,51.000,256,512,MG3P,56.714,55.401 85,0.408,461.000,0.737,0.492,282.500,256,512,RESID,80.727,20.697 86,0.003,1330.000,0.002,0.002,794.500,256,512,COMM3,30.555,30.779 87,0.543,1.000,0.366,0.366,1.000,256,512,MPI_Init(),32.610,32.610 88,0.518,1.000,0.396,0.396,1.000,256,512,MPI_Finalize(),23.566,23.566 89,0.144,459.000,0.400,0.008,280.500,256,512,PSINV,177.757,94.133 90,0.031,6698.620,0.002,0.002,3880.247,256,512,GIVE3,92.946,94.192 91,0.222,6902.620,0.096,0.005,4053.939,256,512,MPI_Send(),56.970,97.630 92,0.215,6902.620,0.012,0.011,4053.939,256,512,MPI_Wait(),94.329,95.094 93,0.024,6698.620,0.002,0.002,3880.247,256,512,TAKE3,90.859,92.476 94,0.060,408.000,0.015,0.033,229.500,256,512,RPRJ3,74.252,44.322 95,0.113,408.000,0.060,0.044,229.500,256,512,INTERP,47.148,61.296 96,0.103,6902.620,0.003,0.003,4053.939,256,512,READY,96.887,97.488 97,0.000,408.000,0.000,0.000,229.500,256,512,COMM3_EX,39.479,18.819 98,0.007,2.000,0.015,0.015,2.000,256,512,ZRAN3,108.406,108.406 99,0.000,204.000,0.000,0.000,121.125,256,512,TAKE3_EX,32.585,33.398 100,0.014,625.562,0.001,0.065,594.594,256,512,ZERO3,92.964,364.161 101,0.004,4.000,0.014,0.014,4.000,256,512,NORM2U3,254.718,254.718 102,0.006,6.000,0.001,0.001,6.000,256,512,MPI_Barrier(),83.457,83.457 103,0.004,6902.620,0.001,0.001,4053.939,256,512,MPI_Irecv(),79.749,65.114 104,0.003,88.000,0.003,0.003,88.000,256,512,MPI_Allreduce(),14.252,14.252 105,0.003,8192.000,0.008,0.006,31030.101,256,512,VRANLC,178.711,107.482 106,0.001,7.000,0.001,0.001,7.000,256,512,MPI_Bcast(),7.318,7.318 107,0.001,8442.270,0.006,0.005,33471.013,256,512,RANDLC,538.650,417.150 108,0.001,1.000,0.000,0.000,1.000,256,512,ALLOC_SPACE,98.042,98.042 109,0.000,204.000,0.000,0.000,121.125,256,512,GIVE3_EX,35.491,37.059 110,0.000,2.000,0.000,0.000,2.000,256,512,TIMER_START,78.763,78.763 111,0.000,471.828,0.000,0.000,250.859,256,512,BUBBLE,40.422,45.136 112,0.000,6.000,0.000,0.000,6.000,256,512,POWER,36.139,36.139 113,0.000,1.000,0.000,0.000,1.000,256,512,GET_ACTIVE_NPROCS,4.375,4.375 114,0.000,2.000,0.000,0.000,2.000,256,512,SETUP,388.920,388.920 115,0.000,1.000,0.000,0.000,1.000,256,512,MPI_Reduce(),15.155,15.155 116,0.000,17.000,0.000,0.000,17.000,256,512,TIMER_CLEAR,15.553,15.553 117,0.000,0.004,0.000,0.000,0.004,256,512,CHECK_TIMER_FLAG,131.259,7.027 118,0.000,2.000,0.000,0.000,2.000,256,512,TIMER_STOP,39.347,39.347 119,0.000,0.004,-0.000,0.000,0.004,256,512,PRINT_RESULTS,311.534,51.585 120,0.000,1.000,0.000,0.000,1.000,256,512,MPI_Comm_size(),23.983,23.983 121,0.000,1.000,0.000,0.000,1.000,256,512,MPI_Comm_rank(),13.217,13.217 122,0.000,1.004,0.000,0.000,1.004,256,512,TIMER_READ,49.436,32.699